Javascript无法隐藏某些div
我得到了“新用户表单”。有三种不同的清晰度级别:Javascript无法隐藏某些div,javascript,html,field,Javascript,Html,Field,我得到了“新用户表单”。有三种不同的清晰度级别: 客户 客户联系人 clientRepresentative 还有一些字段,如newMail、newPostalCode等 下面是我用来显示元素的代码: function doShow(obj) { document.getElementById(obj).style.display = ''; } function doHide(obj) {
- 客户
- 客户联系人
- clientRepresentative
function doShow(obj) {
document.getElementById(obj).style.display = '';
}
function doHide(obj) {
document.getElementById(obj).style.display = 'none';
}
以及我用来隐藏元素的代码:
function doShow(obj) {
document.getElementById(obj).style.display = '';
}
function doHide(obj) {
document.getElementById(obj).style.display = 'none';
}
它适用于小数据块。在创建用户时,会指定清除级别,如果它是clientRepresentative,则会显示相应的字段。
在示例中,客户端只有一个电子邮件地址,ClientPresentative有两个电子邮件地址,clientContact有三个
但是这个不起作用。
如果我选择客户端,则会有一封电子邮件,正如计划的那样,但如果我选择clientContact,然后切换到clientRepresentative,则冗余字段(电子邮件3)不会被隐藏
我相信这是一个JavaScript问题,请帮助我,因为我的愤怒达到了顶点
编辑:
我忘记粘贴用于显示/隐藏项目的功能
if (clearenceLevel != "Chose...") {
if (clearenceLevel == "client") {
doShow("newMail");
doHide("newMail2");
doHide("newMail3");
doShow("newNip");
doShow("newRegon");
doShow("newStreet");
doHide("newHeadquarters");
doShow("newAddress");
doShow("newPostalCode");
doShow("kptekst");
doShow("newCity");
doShow("newAccount");
doShow("newState");
doHide("newStatus");
doHide("newPassword");
} else if (clearenceLevel == "clientRepresentative") {
doShow("newMail");
doShow("newMail2");
doHide("newStatus");
doHide("newMail3");
doHide("newNip");
doHide("newRegon");
doHide("newStreet");
doHide("newHeadquarters");
doHide("newAddress");
doHide("newPostalCode");
doHide("newCity");
doHide("newAccount");
doHide("newState");
doHide("kptekst");
doShow("newPassword");
} else if (clearenceLevel == "clientContact") {
doShow("newMail");
doShow("newMail2");
doShow("newMail3");
doHide("newNip");
doHide("newRegon");
doHide("newStatus");
doHide("newStreet");
doHide("newHeadquarters");
doHide("newAddress");
doHide("newPostalCode");
doHide("newCity");
doHide("newAccount");
doHide("newState");
doHide("kptekst");
doHide("newPassword");
}
}
您可能在代码中犯了错误 else if(clearenceLevel==“clientRepresentative”){
doShow(“newMail”);
doShow(“newMail2”);
doHide(“newStatus”);
doShow(“newMail3”);//这不是doHide()吗?
//etc
从您的消息中,我了解到您希望在切换到clientRepresentative时隐藏电子邮件3,但在上面的代码中,doShow()被执行,而不是doHide().不是对您的问题的直接回答,而是关于如何改进操作方式的建议。与其列出每个用户级别要显示和隐藏的每个属性,不如执行以下操作:
<input type="text" name="email" class="client representative contact">
<input type="text" name="ssn" class="representative">
谢谢你的回答,
我正在张贴用于发送数据的表格
echo '<div id="newMail"><br><font color="red">*</font>email: <input type="text" name="newMail" value="' . $_POST['newMail'] . '" /> </div>';
echo '<div id="newMail2"><br>email 2: <input type="text" name="newMail2" value="' . $_POST['newMail2'] . '" /> </div>';
echo '<div id="newMail3"><br>email 3: <input type="text" name="newMail3" value="' . $_POST['newMail3'] . '" /> </div>';
echo '<div id="newNip"><br>nip: <input type="text" maxlength="15" name="newNip" value="' . $_GET['nip'] . '"/> </div>';
echo '<div id="newRegon"><br>regon: <input type="text" name="newRegon" value="' . $_POST['newRegon'] . '" /> </div>';
echo '<div id="newStreet"><br>Street: <input type="text" name="newStreet" value="' . $_POST['newStreet'] . '" /> </div>';
echo '<div id="newHeadquarters"><br>Headquarters: <select name="newHeadquarters"> ';
echo'
*电子邮件:';
回送“
电子邮件2:”;
回送“
电子邮件3:”;
回音“
nip:”;
回声“
regon:”;
回音“
街:”;
回音“
总部:”;
您将向doShow和doHide传递什么?它看起来应该是字符串(元素id),但参数名为“obj”。如果您确实传递了DOM元素对象,那么代码将无法工作。您是否100%确定文档中每个id只存在一次?您真的需要一些适当的工具来调试这些东西,如Firebug(在Firefox上)或Fiddler(IE)。两个可能的问题:1.您是否使用Firebug进行调试?可能是您的魔法字符串有输入错误吗?2.事件触发:检查执行所有这些显示和隐藏操作的函数是否真的被调用。采取相同的方法:使用Firebug进行调试。问题在于doShow(“newState”);Firebug显示它在这一点上崩溃了,因为……我的表格中没有这样的字段!非常感谢你们,你们让我开心!你们说得对,应该是doHide(),但它并没有改变任何事情,因为当选择ClientRepresentation时,newMail3字段仍然可见;/有趣的是,如果我选择ClientRepresentation,然后选择client,冗余字段被隐藏。你没有关闭代码中的最后一个div。这是一个打字错误还是一个疏忽?这只是一个疏忽,我隐藏了ch不存在。Javascript代码正在崩溃。谢谢你的努力。好主意,我将以这种方式采用我的代码。谢谢你的建议。