Javascript 显示:无对标签无效

Javascript 显示:无对标签无效,javascript,html,Javascript,Html,我为用户提供了两种文本输入方式——通过输入文本字段,或从下拉菜单中选择预定义文本。Javascript控制哪一个是可见的。 我有这两种输入法和它们对应的两个标签: <h:form id="test"> <div> <h:outputLabel id="label_1" value="Your text:" style="display:block" /> <h:inputText id="txt" value="#{myform.inputTex

我为用户提供了两种文本输入方式——通过输入文本字段,或从下拉菜单中选择预定义文本。Javascript控制哪一个是可见的。 我有这两种输入法和它们对应的两个标签:

<h:form id="test">
<div>
  <h:outputLabel id="label_1" value="Your text:" style="display:block" />
  <h:inputText id="txt" value="#{myform.inputText}" style="display:block" />

  <h:outputLabel id="label_2" value="Choose text:" style="display:none" />
  <h:selectOneMenu id="drop" value="#{myform.inputText}" style="display:none">
    <f:selectItem itemValue="11" itemLabel="Preselected text 1" />
    <f:selectItem itemValue="22" itemLabel="Preselected text 2" />
  </h:selectOneMenu>
</div>
</h:form>
因此,它要么是label_1+txt要么是label_2+drop 问题是:当页面加载时,只有标签1+txt可见。不幸的是,标签1、标签2和txt是可见的


为什么drop的定义style=“display:none”有效,而label_2的相同定义无效?

隐藏label

function Hide(id) {
    document.getElementById(id).style.visibility = "hidden";
}​

Hide('label_1');
function Show(id) {
    document.getElementById(id).style.visibility = "visible";
}

Show('label_1');
显示标签

function Hide(id) {
    document.getElementById(id).style.visibility = "hidden";
}​

Hide('label_1');
function Show(id) {
    document.getElementById(id).style.visibility = "visible";
}

Show('label_1');

解决方案是在主体中的脚本中添加jQuery块

$(document).ready(function() {
    $('[id$=label_2]').hide();
    $('[id$=drop]').hide();
});

您是否检查了JavaScript是否被执行/页面上是否存在JavaScript错误?你能提供一个吗?那是什么样的标记?一定是你的代码错误。通过直接键入document.getElementById('label_2').style.display=“无”来检查它。选择元素的默认显示为内联块,标签的默认显示为内联。在“无”和“”(空字符串)之间切换要好得多,这样当不是“无”时,元素采用它们的默认或级联显示值?查看源代码,是服务器端标记转储了您的样式标记吗?我尝试了
,但标签2仍在开头显示。
outputLabel
是否与
salesforce
jsf
相关?可见性和显示是两个不同的方面。