2012-12-26 91 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没有变化)。