无法在Javascript中单击Label

时间:2014-10-21 18:42:46

标签: javascript

我想点击标签,但不能。这是我的代码:

 function nameToggle(){              
                 var NameInput = get("nameInput");  
                 var labelName = nameInput.getLabel();
                 alert(labelName);
                 labelName.onclick = showAlert;                         
            } 
             function showAlert(){
                 alert("onclick Event Detected");
             }

这是我的HTML:

<div id="nameShow">
    <div  style="margin: 36px 0 0 50px;">
            <input id="nameInput"  label="Name"  onkeydown="namesFunction()"/>                  

    </div>
</div>

在输入中我想要onkeydown调用名称函数,它完美地工作但是当点击标签(名称)时我想切换。我在另一个函数中调用nameToggle。但我无法点击“姓名”。我不是在使用jQuery。只有Javascript。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

1)在您的函数nameToggle()内,您已分配onclick到labelName,但那是一个字符串(&#34; Name&#34;)。将onclick分配给NameInput,这是元素:

function nameToggle(){
    var NameInput = document.getElementById("nameInput");
    var labelName = nameInput.getLabel();
    alert(labelName);
    NameInput.onclick = showAlert; // <---                    
}

2)由于你在函数内部进行onclick-assignment,你必须在nameToggle() 之前调用它,然后点击。

如果您不想要,那么您必须在外面执行一项功能:

document.getElementById("nameInput").onclick = showAlert; 

编辑根据您的评论:只有DOM元素可以点击。您的label只是元素的属性,您无法点击属性。在输入之前将标签设置为html中的真实元素,如下所示:

<label for="nameInput" onclick="showAlert()">Name</label>

for - 属性表示此<label>属于id = nameInput的输入。您可以在标签内分配onclick,如上所示,或者使用:

 document.querySelector("label[for='nameInput']").onclick = showAlert;