0

以下のメソッドは IE で正常に動作していますが、次のエラーが発生します。

TypeError: hdnButton .click is not a function

Firefoxで使用する場合。

function PopupTest() {
    var hdnButton = document.getElementById('div_btn').firstChild;
    hdnButton.click();
}

誰かがこの問題を乗り越える方法を提案できますか? 私はそれに対する解決策を見つけることができません。

4

2 に答える 2

1

私の推測では(html を表示していないため)、IE が無視している空白 (おそらく改行) があるが、どの FF がテキスト ノードとして返されているかということです。もしそうなら、あなたは次のようなものでそれをスキップできるはずです:

function PopupTest() {
    var hdnButton = document.getElementById('div_btn').firstChild;
    while (hdnButton.nodeType === 3)
        hdnButton = hdnButton.nextSibling;
    hdnButton.click();
}

... プロパティを使用して、がテキスト ノード (テキスト ノードを意味します。詳細についてはMDN.nodeTypeを参照してください) であるかどうかをテストすることによって機能します。存在する場合は、次の兄弟を取得してその をテストし、テキスト ノードではない要素が見つかるまで繰り返します。(もちろん、これはあることを前提としています。).firstChild3.nodeType

または、(非テキスト ノード) 最初の子がどのタグであるべきかがわかっている場合は、それに基づいて選択できます。たとえば、実際に<button>要素である場合は、次のようになります。

hdnButton = document.getElementById('div_btn').getElementsByTagName("button")[0];
hdnButton.click();

または、IE<=7 をサポートする必要がない場合:

document.querySelector("#div_btn > :first-child").click();
于 2013-11-04T09:57:57.207 に答える
0

document.getElementById('div_btn').firstChild; かどうかを確認します。

存在する場合は、空白などの別のエラーがあるか、DOM がロードされる前に PopupTest() を呼び出しています。

試す:

<body onload="PopupTest()">
于 2013-11-04T09:59:32.067 に答える