我尝试使用JavaScript获取脚本标记的innerHtml。
var scripts = document.getElementsByTagName("script");
console.log(scripts.length);
console.log(scripts[0].innerHtml);
此脚本记录2
和undefined
,但为什么在找到2个脚本时返回undefined?我需要获取脚本的innerHtml。 Anny帮助将不胜感激:)
修改
将innerHtml
更改为innerHTML
后,它仍会在控制台中抛出错误:
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 :(得分:6)
innerHtml
应该是:
innerHTML
答案 1 :(得分:3)
应该是.innerHTML
,而不是.innerHtml
。
答案 2 :(得分:2)
因为您正在调用script
的{{1}}标记通过innerHTML
属性声明其来源,而不是在元素本身内部。
答案 3 :(得分:1)
因为它是innerHTML
而不是innerHtml
答案 4 :(得分: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
没有改变。