1
<div id="bottom_right" style="display:none;">
    <input type="text" name="mytext" id="mytext" onclick="myFn('mytext')">
</div>

function myFn(id){
    document.getElementById(id).value = 'hello';
}

function showForm() {
    document.getElementById("bottom_right").style.display = 'block';
}

function showRoom() {
    clearRoommates();
    var root = document.getElementById("bottom_left");
    root.innerHTML="";
var inputRadio = "<h3>Select a room from below</h3><br/>";
    inputRadio += "<div id = 'left'><label><input name='rad' type='radio'>510</label><label><input name='rad' type='radio'>520</label>";
    inputRadio += "<label><input name='rad' type='radio'>530</label><label><input name='rad' type='radio'>540</label></div>";
    inputRadio += "<div id = 'right'><label><input name='rad' type='radio'>550</label><label><input name='rad' type='radio'>560</label>";
    inputRadio += "<label><input name='rad' type='radio'>570</label><label><input name='rad' type='radio'>580</label></div>";
    root.innerHTML=inputRadio;
    var element = document.getElementsByTagName("input");
    for (var i=element.length-1; i>=0; i--) {
        element[i].setAttribute('onclick',"showForm()");
    }
}

表示スタイルを「none」から「block」に変更する追加のコードが別の場所にあります。ユーザーが入力ボックスをクリックすると、テキスト「hello」が自動的に表示されます。div からスタイルを削除するか、最初に「ブロック」に設定すると、これは正常に機能します。

表示スタイルが最初に「なし」の場合、これが機能しないのはなぜですか?

表示変更機能を含むように編集

4

2 に答える 2

0

「'none' を表示しても、非表示のボックスは作成されないことに注意してください。ボックスはまったく作成されません。」

http://www.w3.org/TR/CSS2/visuren.html

これが、div またはその子 (入力) をクリックできない理由です。

于 2013-10-16T01:50:19.533 に答える
0

問題は、onclick="myFn('mytext')このループ中にマークアップ内の が置き換えられていることです。

var element = document.getElementsByTagName("input");
for (var i=element.length-1; i>=0; i--) {
    element[i].setAttribute('onclick',"showForm()");
}

そのため、 をクリックすると、ではなく再度<input>呼び出されます。showForm()myFn('mytext')

ではなくon<input>を使用して、コレクションからそれを除外できます。getElementsByTagName()rootdocument

var element = root.getElementsByTagName("input");

次に、ループはのすべてのrootではなく、 の子孫にのみ影響します。<input>document

于 2013-10-16T02:05:14.947 に答える