Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pętla
soliniak
post 21.05.2017, 21:58:02
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


Próbuje wygenerować coś takiego:

[JAVASCRIPT] pobierz, plaintext
  1. var a = document.getElementById("a").innerHTML,
  2. b = document.getElementById("b").innerHTML,
  3. c = document.getElementById("c").innerHTML,
  4. d = document.getElementById("d").innerHTML,
  5. e = document.getElementById("e").innerHTML,
  6. f = document.getElementById("f").innerHTML,
  7. g = document.getElementById("g").innerHTML,
  8. h = document.getElementById("h").innerHTML,
  9. i = document.getElementById("i").innerHTML;
[JAVASCRIPT] pobierz, plaintext


za pomocą pętli

[JAVASCRIPT] pobierz, plaintext
  1. for (var i = 65; i <= 74; i++){
  2. String.fromCharCode(i).toLowerCase() = document.getElementById(String.fromCharCode(i).toLowerCase()).innerHTML;
  3. }
[JAVASCRIPT] pobierz, plaintext


Niestety otrzymuję błąd: "Invalid left-hand side in assignment" :/
Da się coś z tym zrobić?

Tutaj całość kodu:

[JAVASCRIPT] pobierz, plaintext
  1. $(function(){
  2.  
  3. jQuery.fn.clickToggle = function(a,b) {
  4. var ab = [b,a];
  5. return this.on("click", function(){ ab[this._tog^=1].call(this); });
  6. };
  7.  
  8. var x = "o";
  9. console.log("Start: " + x);
  10. //check if we have 3 in row, if yes, alert winner
  11.  
  12. $(".container").on("click", check = function(nazwa){
  13. // for (var i = 65; i <= 74; i++){
  14. // i = document.getElementById(String.fromCharCode(i).toLowerCase()).innerHTML;
  15. // String.fromCharCode(i).toLowerCase() = document.getElementById(String.fromCharCode(i).toLowerCase());
  16. // }
  17. var a = document.getElementById("a").innerHTML,
  18. b = document.getElementById("b").innerHTML,
  19. c = document.getElementById("c").innerHTML,
  20. d = document.getElementById("d").innerHTML,
  21. e = document.getElementById("e").innerHTML,
  22. f = document.getElementById("f").innerHTML,
  23. g = document.getElementById("g").innerHTML,
  24. h = document.getElementById("h").innerHTML,
  25. i = document.getElementById("i").innerHTML;
  26.  
  27. var nazwa = x;
  28. console.log("nVar e = " + nazwa);
  29.  
  30.  
  31. if(a == nazwa && b == nazwa && c == nazwa){
  32. console.log("Wygrał! " + nazwa + " :-)");
  33. //kolorujemy wygrane pola
  34. return true;
  35. }else{
  36. return false;
  37. }
  38. });
  39.  
  40.  
  41. //check if game has ended or player clicks at used field, else put sign in field
  42. $("div.item").on("click", function(){
  43. var place = this.innerText;
  44. if(check(x) || place == "x" || place == "o"){
  45. console.log("Niedozwolony ruch!");
  46. return false;
  47. } else {
  48. this.innerText = x;
  49. }
  50. });
  51.  
  52. //Change between x and o
  53. $(".container").clickToggle(function() {
  54. if(check()){
  55. x = "";
  56. } else {
  57. x = "x";
  58. console.log(x);
  59. return x;
  60. }
  61. }, function() {
  62. if(check()){
  63. x = "";
  64. } else {
  65. x = "o";
  66. console.log(x);
  67. return x;
  68. }
  69. });
  70.  
  71.  
  72.  
  73.  
  74. //reset table
  75. $(".reset").on("click", function(){
  76. $(".item").empty();
  77. });
  78. });
[JAVASCRIPT] pobierz, plaintext


Pozdrawiam
Go to the top of the page
+Quote Post
markuz
post 21.05.2017, 22:01:46
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Wrzuć to do tablicy window. Tj. window[String.fromCharCode(i).toLowerCase()] potem będziesz mógł używać a, b, c itd.
(ale weź pod uwagę to, że możesz niechcąco nadpisać inne - istniejące już zmienne - nawet nie swoje ale jakiejś biblioteki która dodasz teraz albo za miesiąc/rok)
Nie spotkałem się z taką praktyką i pewnie robisz coś nie tak.
Czym są te elementy o id od a do i?

Najlepiej będzie jak wrzucisz całość na https://jsfiddle.net/ wtedy ja ew. ktoś inny będzie miał łatwiej Ci pomóc przy kolejnych pytaniach.

Ten post edytował markuz 21.05.2017, 22:05:24


--------------------
Go to the top of the page
+Quote Post
soliniak
post 22.05.2017, 17:07:36
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


Możliwe że robię coś nie tak, uczę się ;P.
Nazwy zmiennych tj., a, b, c... mogę zmienić sobie dowolnie. Tak nazwałem pola na samym początku i tak już zostało, stąd kombinacje.
Podsyłam link
codepen.io

Jeszcze dodatkowe pytanie.
Mając taki kod jak tutaj link
muszę ustawić flagę żeby przekazać parametr dalej ponieważ samo przekazanie przez funkcję true lub false nie działa.
Czemu tak się dzieje? Ja robię coś źle?
Zamysł był taki że funkcja zwraca true co jest równoznaczne z wygraną gracza i przerwaniem gry, podświetleniem pól itd., gdy zwraca false to gra trwa dalej.
Ale w momencie sprawdzania true false, niezależnie od wyniku if(check()) lub if(!check()), true i false są jakby ignorowane...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 18:15