を呼び出そうとしていますが、どのパラメーターを渡しても、結果としてdocument.getElementsByTagName
返されます。undefined
(「*」を渡しても。)
ググってみましたが、検索結果はすべて getElementsByTagName 結果配列の要素が未定義というものでした。私が得ているundefined
のは結果そのものであり、それが私を壁に押し上げています。
誰がこれを引き起こす可能性があるか知っていますか? (Firefox 12.0 を使用しています。Chrome では、期待どおりの結果が得られます。)
編集:OK、ここにサンプルコードがあります:
function buttonClick(){
var xhr = new XMLHttpRequest();
var msg = document.getElementById('message');
var buttons = document.getElementsByTagName("button");
var button, i;
for (i = 0; i < buttons.length; ++i){
button = buttons[i];
msg.removeChild(button);
}
xhr.onreadystatechange = function() {
if(xhr.readyState == 4){
handleResult(xhr.responseText, msg);
}
};
xhr.open("POST", location.href, true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send("cmd=MyCommand");
}
そして、Firebug の [スクリプト] タブでトレースするか、[コンソール] タブから呼び出すかに関係なく、getElementsByTagName
常に が返されます。undefined
(これは人々を混乱させるように思われるため、Firebug でも同様です。どうやらあまりにも多くのコンソールが浮かんでいるようです。)
証拠として、Firebug コンソールを使用しようとしたときに得られたものを次に示します。
>>> document.getElementsByTagName("button");
undefined
>>> msg.getElementsByTagName("button");
undefined
>>> msg.getElementsByTagName
getElementsByTagName()
>>> msg.getElementsByTagName("BUTTON");
undefined
>>> msg.getElementsByTagName("*");
undefined
>>> document.getElementsByTagName("*");
undefined
>>> document.getElementsByTagName("body");
undefined
マークアップは無関係です (またはそうあるべきです)。これは有効で整形式の HTML ページで、いくつかのボタンやその他の要素が含まれています。この JS 関数はonclick
、ボタンの 1 つに関連付けられています。しかし、それは次のようになります。
<html xmlns="http://www.w3.org/1999/xhtml"><head>
blah
</head>
<body>
<script type="text/javascript" src="/myJS.js"></script>
<div id="page-container">
<div id="message"><button onclick="buttonClick();">Button 1</button><button onclick="ButtonClick2()">Button 2</button></div>
</div>
</body></html>