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()");
    }
}

其他地方还有其他代码可以将显示样式从“无”更改为“块”。当用户单击输入框时,它应该会自动显示文本“你好”。如果我从 div 中删除样式或最初将其设置为“阻止”,这会很好。

当显示样式最初为“无”时,为什么这不起作用?

编辑以包括显示更改功能

4

2 回答 2

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').

<input>您可以使用getElementsByTagName()onroot而不是从集合中排除它document

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

然后,循环只会影响roots 的后代,而不是整个<input>s 中的所有 s document

于 2013-10-16T02:05:14.947 回答
0

“请注意,‘无’的显示不会创建一个不可见的框;它根本不会创建任何框。”

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

这就是您无法单击 div 或其子项(输入)的原因。

于 2013-10-16T01:50:19.533 回答