0

JavaScriptを使用してスクリプトタグのinnerHtmlを取得しようとしています。

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

このスクリプトはログ2undefinedを記録しますが、2つのスクリプトが見つかったのに、なぜ未定義が返されるのですか?スクリプトの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>
4

5 に答える 5

7
innerHtml

する必要があります:

innerHTML
于 2012-12-26T12:32:44.520 に答える
4

.innerHTMLではなく、である必要があり.innerHtmlます。

于 2012-12-26T12:32:14.677 に答える
2

script呼び出しているタグは、要素自体の内部ではなくinnerHTML、属性を介してソースを宣言しているためです。src

于 2012-12-26T12:33:32.270 に答える
1

そうでは innerHTMLないのでinnerHtml

于 2012-12-26T12:33:22.513 に答える
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.lengthimax

于 2017-08-03T23:18:16.063 に答える