2012-12-26 94 views
1

我嘗試使用JavaScript獲取腳本標記的innerHtml。使用JavaScript獲取腳本標記的innerHtml返回'undefined'

var scripts = document.getElementsByTagName("script"); 
console.log(scripts.length); 
console.log(scripts[0].innerHtml); 

這個腳本日誌2undefined,但爲什麼當有發現2個腳本它返回undefined?我需要獲取腳本的innerHtml。安妮幫助將不勝感激:)

編輯: 改變innerHtmlinnerHTML它仍然拋出在控制檯中的錯誤後:

Uncaught TypeError: Cannot read property 'innerHTML' of undefined (line 34) 

線34是這樣的:

var scripts = document.getElementsByTagName("script"); //line 32 
for (var i = 0, imax = scripts.length; i < imax; i++) { //line 33 
var scriptstring = scripts[i].innerHTML; } // line 34 

順便說一句,腳本不是嵌入式.js文件,它在.html文件中被硬編碼。

編輯2:整個.html文件

<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Test</title> 

    <script type="text/javascript"> 
     onmousemove = function test1() { 
      window.alert('hello'); 
     } 
    </script> 
    <script> 
     window.onload = function() { 
      var scripts = document.getElementsByTagName("script"); 

      for (var i = 0, imax = scripts.length; i < imax; i++) { 
       var scriptstring = scripts[i].innerHTML; 
       scriptstring = scriptstring.replace(/(\r\n|\n|\r)/gm,""); //convert the innerHTML to one line, easier to match 

       if (scriptstring.match(/.*(function) (test1).*/) != null) { 
        scripts[i].parentNode.removeChild(scripts[i]); 
       } 
      } 
     } 
    </script> 

</head> 
<body> 

</body> 
</html> 
+0

嘗試調試並檢查您的問題腳本[0] .innerHTML –

+2

它是innerHTML,它不是innerHtml。 – Kannika

+0

你還可以發佈完整的html文件嗎? – Dogbert

回答

6
innerHtml 

應該是:

innerHTML 
+0

謝謝,我現在覺得這樣一個白癡...... – P1nGu1n

3

應該.innerHTML,不.innerHtml

1

,因爲它是不innerHTMLinnerHtml

2

因爲script標記你呼籲innerHTML通過src屬性聲明它的來源,而不是元素本身內部。

+0

該腳本不是嵌入式的.js文件,它在.html文件中硬編碼 – P1nGu1n

0

請重寫這一行
for (var i = 0, imax = scripts.length; i < imax; i++)
在最後一個索引
for (var i = 0; i < scripts.length; i++)
因爲
var scriptstring = scripts[i].innerHTML;
線運行錯誤(第一個腳本因此scripts.length刪除遞減和imax沒有變化)。