Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pętla
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
soliniak
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
markuz
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.
soliniak
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...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.