Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Tworzenie wielu obiektów na raz, for.
tzm
post
Post #1





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


  1. for(i = 1; i < 5; i++){
  2. var objEmpty = {};
  3. var objEmpty['obj'+i] = new T('obj'+i);
  4. addEventListener('mousemove', function() {obj.setStopTime();obj.go2();});
  5. addEventListener('keydown', function() {obj.setStopTime();obj.go2();});
  6. }


Co źle robię?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




1) Ciezko napisac czym sie objawia blad??
2) Za kazdym razem w petli tworzysz var objEmpty = {}; przez co nadpisujesz poprzednie. A o to ci chyba nie chodzilo...

3) Rowniez to jest bez sensu
var objEmpty['obj'+i]
powinno byc
objEmpty['obj'+i]
Go to the top of the page
+Quote Post
tzm
post
Post #3





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


Problem nie objawia się niczym, żadnej sensownej akcji nie widać a z debbugowania JS jestem lewy jak cholera.

Właśnie o to chodzi by dla 4 elementów div na stronie utworzyć ten obiekt osobno. Każdy div ma mieć swój licznik.

Może całość rozjaśni bardziej problem:

  1.  
  2. <!DOCTYPE html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <link rel="stylesheet" type="text/css" href="style.css">
  6. <link href='http://fonts.googleapis.com/css?family=Montserrat' rel='stylesheet' type='text/css'>
  7. <title>Zadanie #6</title>
  8. function T(div){
  9. var millis = 0;
  10. var sec = 0;
  11. var stopTime=0;
  12. var totalTime =0;
  13. var temp = 0;
  14. var startTime=0;
  15. var work = false;
  16. this.setStopTime = function(){
  17. stopTime = (new Date()).getTime() + 3000;
  18. }
  19. function setValue(value) {
  20. millis = Math.floor ( value % 1000 );
  21. value = Math.floor( value / 1000);
  22. sec = Math.floor ( value % 60 );
  23. value = Math.floor( value / 60 );
  24. if( value < 10 ) { value="0" + value;
  25. if( sec < 10 ) { sec = "0" + sec; }
  26. else if( millis < 100 ) { millis = "00" + millis; }
  27. }
  28. document.getElementById(div).innerHTML = value + ":" + sec +"." + millis;
  29. }
  30. this.go2 = function() {
  31. if ( work == true ) return;
  32. work = true;
  33. document.getElementById(div).style.backgroundColor="red";
  34. var currentTime = (new Date()).getTime();
  35. startTime = currentTime;
  36. var counter = setInterval(function() {
  37. if(currentTime >= stopTime){
  38. document.getElementById(div).style.backgroundColor="";
  39. clearInterval(counter);
  40. totalTime+= stopTime - startTime;
  41. work = false;
  42. setValue(totalTime);
  43. return;
  44. }
  45. temp = currentTime - startTime;
  46. setValue(temp+totalTime);
  47. currentTime = (new Date()).getTime();
  48. }, 1);
  49. }
  50. }
  51.  
  52.  
  53. for(i = 1; i > 5; i++){
  54. var obj = new T('obj'+i);
  55. addEventListener('mousemove', function() {obj.setStopTime();obj.go2();});
  56. addEventListener('keydown', function() {obj.setStopTime();obj.go2();});
  57. }
  58. </script>
  59. </head>
  60. <body>
  61.  
  62. <div id="obj1"><p>licznik 1</p></div>
  63. <div id="obj2"><p>licznik 2</p></div>
  64. <div id="obj3"><p>licznik 3</p></div>
  65. <div id="obj4"><p>licznik 4</p></div>
  66.  
  67. </body>
  68. </html>
Go to the top of the page
+Quote Post
markuz
post
Post #4





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

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


https://developer.mozilla.org/en-US/docs/We...nted_JavaScript
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




raz masz i < 5 raz i > 5....zastanow sie na logcznoscią....
raz tworzysz tablice raz nie tworzysz....

napisalem ci jak masz poprawic pierwszy kod. Nie widze nigdzie moich uwag
Go to the top of the page
+Quote Post
tzm
post
Post #6





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


@nospor dałem co miałem na moment zanim wychodziliśmy na fajkę, nie poprawione.

To:
  1. for(i = 1; i < 5; i++){
  2. var obj = new T('obj'+i);
  3. window.onload = function() {
  4. addEventListener('mousemove', function() {obj.setStopTime();obj.go2();});
  5. addEventListener('keydown', function() {obj.setStopTime();obj.go2();});
  6. };
  7. }

Działa dla jednego obiektu - ostatniego.
To:
  1. var objEmpty = {};
  2. for(i = 1; i < 5; i++){
  3. objEmpty['obj'+i] = new T('obj'+i);
  4. window.onload = function() {
  5. addEventListener('mousemove', function() {obj.setStopTime();obj.go2();});
  6. addEventListener('keydown', function() {obj.setStopTime();obj.go2();});
  7. };
  8. }

Nie działa w ogóle. Chciałbym zrozumieć gdzie błąd robię.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 27.09.2025 - 08:14