2017-07-22 71 views
1

我有一個簡單的JavaScript代碼,我不知道爲什麼它不起作用。代碼:javascript <body onload =「do_something()」> not working

<!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>
但它不顯示「A」的值,所以也許這是身體的onload的問題呢?謝謝。

+0

這段代碼不能顯示任何內容,它應該顯示當前'a'值的警報。 – alexmac

+0

因爲稍後爲'a'賦值,所以a的值是未定義的。 – bigbounty

+0

事情是,刪除第一個提醒後,它仍然沒有顯示第二個提示 –

回答

1

你的函數do_something()沒有被定義,因爲你的函數中的某些非法字符在var a=1a--之後,用';'來代替它們。 還需要使用它之前初始化,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

你是對的,非常感謝你!刪除第一個警報(「a」)後刪除 –

-1

您試圖聲明之前提醒的a值否則會給出。所以你會得到undefined錯誤。

查看下面的代碼片段。它在第二次警報中提醒a的值。

<!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

您使用 '一',你定義它之前。變量聲明被升起,但'a'最初沒有賦值。

+0

;它仍然不起作用 –

+0

所以事實證明,你的代碼有幾個問題。正如Dij指出的那樣,你的代碼主要使用了一些不尋常的標點符號。我指出的問題也是需要牢記的,但它不是最大的問題 –

0

股利,標籤或任何後直接把功能:

<!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

它仍然不起作用,錯誤信息是「Uncaught ReferenceError:do_something is not defined」,它是「do_something();」 –

0

這裏是一個事實:

1)這是完全在本地工作。

2)在jsfiddle中,你必須從javascript.after刪除onload選項,它會正常工作。因爲它會創建兩個onload函數調用,從而導致錯誤。

/>請在定義之前刪除'a'的警報。

+0

只是刪除「onload」?這是行不通的 –

相關問題