Javascript 风格=“;显示:无&引用;破环 函数myFn(id){ document.getElementById(id).value='hello'; } 函数showForm(){ document.getElementById(“右下”).style.display='block'; } 功能陈列室(){ 室友(); var root=document.getElementById(“左下”); root.innerHTML=“”; var inputRadio=“从下面选择一个房间”; inputRadio+=“510520”; inputRadio+=“530540”; inputRadio+=“550560”; inputRadio+=“570580”; root.innerHTML=inputRadio; var元素=document.getElementsByTagName(“输入”); 对于(var i=element.length-1;i>=0;i--){ 元素[i].setAttribute('onclick','showForm()'); } }

Javascript 风格=“;显示:无&引用;破环 函数myFn(id){ document.getElementById(id).value='hello'; } 函数showForm(){ document.getElementById(“右下”).style.display='block'; } 功能陈列室(){ 室友(); var root=document.getElementById(“左下”); root.innerHTML=“”; var inputRadio=“从下面选择一个房间”; inputRadio+=“510520”; inputRadio+=“530540”; inputRadio+=“550560”; inputRadio+=“570580”; root.innerHTML=inputRadio; var元素=document.getElementsByTagName(“输入”); 对于(var i=element.length-1;i>=0;i--){ 元素[i].setAttribute('onclick','showForm()'); } },javascript,Javascript,其他地方还有其他代码将显示样式从“无”更改为“块”。当用户单击输入框时,它会自动显示文本“hello”。如果我从div中删除样式,或者最初将其设置为“block”,则效果很好 当显示样式最初为“无”时,为什么不起作用 编辑为包含显示更改功能“请注意,“无”的显示不会创建不可见的框;它会创建一个不可见的框。” 这就是您无法单击div或其子项(输入)的原因。问题在于,在此循环期间,标记中的onclick=“myFn('mytext')正在被替换: <div id="bottom_right"

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

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

编辑为包含显示更改功能

“请注意,“无”的显示不会创建不可见的框;它会创建一个不可见的框。”


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

问题在于,在此循环期间,标记中的
onclick=“myFn('mytext')
正在被替换:

<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()");
    }
}
因此,当您单击
时,它只是再次调用
showForm()
,而不是
myFn('mytext')

您可以使用
根目录下的
而不是
文档中的
来从集合中排除该

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

然后,循环将只影响
root
的子体,而不是整个
文档中的所有

如果该输入不可见,您将如何单击该输入?有一个按钮将样式从“无”更改为“块”。同时发布该代码。如果您单击该按钮以显示div,则该代码工作正常。您收到了吗是否有任何错误?中的任何内容?您发布的内容似乎与预期的一样有效:。
var element = root.getElementsByTagName("input");