2017-07-22 3 views
1

Ich habe einen einfachen JavaScript-Code und ich weiß nicht, warum es nicht funktioniert. der Code ist:Javascript <Körper onload = "do_something()"> nicht funktionieren

<!doctype html> 
 
<html> 
 
    <head> 
 
    <script> 
 
     function do_something() { 
 
     alert(a); 
 
     var theBody = document.getElementsByTagName("body")[0]; 
 
     var theImg = document.createElement("img"); 
 
     var a = 1; 
 
     var count = 0; 
 
     for (var i = 0; i < 10; i++, count++) { 
 
      if (i == 5) continue; 
 
      if (count == 3) { 
 
       count = 0; 
 
       a--; 
 
      } else { 
 
       a++; 
 
      } 
 
      if (i > 7) break; 
 
     } 
 
     alert(a);     
 
     } 
 
    </script> 
 
    </head> 
 
    <body onload="do_something()"> 
 
    
 
    </body> 
 
</html>
aber nicht den Wert von "a" nicht angezeigt wird, so ist es vielleicht das Problem der Körper onload? Vielen Dank.

+0

Dieser Code kann nichts anzeigen, er sollte eine Warnung mit dem aktuellen 'a'-Wert anzeigen. – alexmac

+0

Der Wert von a ist nicht definiert, da Sie den Wert für 'a' später zuweisen. – bigbounty

+0

Die Sache ist, nach dem Entfernen der ersten Warnung a, es zeigt immer noch nicht die zweite Warnung a –

Antwort

1

Ihre Funktion do_something() ist wegen einiger ungültiger Zeichen in Ihrer Funktion nach var a=1 und a-- nicht definiert, ersetzen Sie diese durch ';' Darüber hinaus müssen Sie eine initialisieren, bevor es zu benutzen, sonst wird es gegeben undefined

<!doctype html> 
 
<html> 
 
    <head> 
 
    <script> 
 
     function do_something() { 
 
     var theBody = document.getElementsByTagName("body")[0]; 
 
     var theImg = document.createElement("img"); 
 
     var a = 1; 
 
     alert(a); 
 
     var count = 0; 
 
     for (var i = 0; i < 10; i++, count++) { 
 
      if (i == 5) continue; 
 
      if (count == 3) { 
 
       count = 0; 
 
       a--; 
 
      } else { 
 
       a++; 
 
      } 
 
      if (i > 7) break; 
 
     } 
 
     alert(a);     
 
     } 
 
    </script> 
 
    </head> 
 
    <body onload="do_something()"> 
 
    
 
    </body> 
 
</html>

+0

Sie haben Recht, vielen Dank! –

-1

Sie versuchen, den Wert von a aufmerksam zu machen, bevor sie deklariert wird. So erhalten Sie undefined Fehler.

Überprüfen Sie das folgende Snippet. Es warnt den Wert a in der zweiten Warnung.

<!doctype html> 
 
<html> 
 
    <head> 
 
    <script> 
 
     function do_something() { 
 
     alert("a"); 
 
     var theBody = document.getElementsByTagName("body")[0]; 
 
     var theImg = document.createElement("img"); 
 
     var a = 1; 
 
     var count = 0; 
 
     for (var i = 0; i < 10; i++, count++) { 
 
      if (i == 5) continue; 
 
      if (count == 3) { 
 
       count = 0; 
 
       a--; 
 
      } else { 
 
       a++; 
 
      } 
 
      if (i > 7) break; 
 
     } 
 
     alert(a);  
 
     } 
 
    </script> 
 
    </head> 
 
    <body onload="do_something()"> 
 

 
    </body> 
 
</html>

0

Sie verwenden 'a', bevor Sie es definieren. Die Variablendeklaration wird hochgezogen, aber 'a' wird anfänglich kein Wert zugewiesen.

+0

nach dem Entfernen der ersten Warnung ("a"); es funktioniert immer noch nicht –

+0

So stellt sich heraus, es gab ein paar Probleme mit Ihrem Code. Hauptsächlich verwendete dein Code eine ungewöhnliche Interpunktion, wie Dij darauf hingewiesen hat. Das Problem, auf das ich hingewiesen habe, war auch etwas, das man im Auge behalten sollte, aber es war nicht das größte Problem –

0

setzten die Funktion direkt nach dem div, Tag oder was auch immer:

<!doctype html> 
<html> 
    <head> 
    <script> 
     function do_something() { 
     alert(a); 
     var theBody = document.getElementsByTagName("body")[0]; 
     var theImg = document.createElement("img"); 
     var a = 1; 
     var count = 0; 
     for (var i = 0; i < 10; i++, count++) { 
      if (i == 5) continue; 
      if (count == 3) { 
       count = 0; 
       a--; 
      } else { 
       a++; 
      } 
      if (i > 7) break; 
     } 
     alert(a);  
     } 
    </script> 
    </head> 
    <body> 
     <script type="text/javascript"> 
      do_something(); 
     </script> 

    </body> 
</html> 
+0

es funktioniert immer noch nicht, die Fehlermeldung lautet "Uncaught ReferenceError: do_something is not defined", was "do_something();" –

0

hier ist die Tatsache:

1) Es ist perfekt vor Ort arbeiten.

2) In jsfiddle müssen Sie onload Option von javascript entfernen. Danach wird es gut funktionieren. weil es zwei Aufrufe von onload funtion erzeugt, die Fehler verursachen.

/-> Bitte entfernen Sie die Warnung vor 'a', bevor Sie es definieren.

+0

nur "onload" entfernen? es funktioniert nicht –