-3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<script language="javascript" type="text/javascript">

function setFont() {
   var i;
   for ( i = 0; i < document.all.length; i++) {
      document.all[i].style.fontFamily = "Verdana";
      document.all[i].style.fontSize = "16";
      document.all[i].style.color="black";
   }
};


function abc(a) {
    alert(a);
    ansArray = ['a'];
    for (i = 1; i <= a; i++) {
        document.write('<input type = "button" value = "a">');
        document.write('<input type = "button" value = "b">');
    }
    var myButton = document.getElementsByTagName("input");
    //alert(myButton.length);
    myButton[0].onclick = function() {
        if (ansArray[0] == 'a') myButton[0].style.backgroundColor = "green";
        else myButton[0].style.backgroundColor = "red";
    };
    myButton[1].onclick = function() {
        if (ansArray[0] == 'b') myButton[1].style.backgroundColor = "green";
        else myButton[1].style.backgroundColor = "red";
    };
};​

setFont();
</script>
</head>

<body onload="Javascript:abc(2)">
hello
</body>
</html>

onclick関数はIEでは機能しませんが、chromeとfirefoxでは正常に機能します。間違いは見つかりませんでした。通常の機能が機能しない理由。関数はコンテンツをロードしますが、イベントハンデラーが書き込まれる最初の2つのボタンをクリックしても、IEでのみボタンの色は変更されません。助けてください...よろしくお願いします

4

2 に答える 2

0

ここでの問題は、使用するとdocument.write明らかに JavaScript も上書きされることです。document.write()あなたの問題にあなたを切り替える場合document.body.innerHTML +=は解決されます。0後者の 2 つのボタンは、 buttonと を1排他的に呼び出しているため、そのコードでは機能しませんが、2 番目の 2 つは3and4です。

于 2012-10-25T06:13:24.147 に答える
0

クイックグーグルは、ページが読み込まれた後に document.write を使用しているため、dom も消去していることに問題があることを示唆しています。ページの読み込み後に呼び出される関数でそれを使用することは避けてください。

ソース: http://sitr.us/2012/09/04/monkey-patching-document-write.html

私はIEを持っていないので、テストできませんでした。

于 2012-10-25T06:21:38.703 に答える