0

我有以下功能,我想在我的表单中隐藏一些文本输入字段。我想要隐藏的所有字段都包含在 div 'site2'

<script language="Javascript">

function showHide(value) {
if (value=='yes') {
        document.getElementById(site2).style.display = "none";
        document.getElementById(site2).style.display = "block";
        document.add.addSite2Line1.disabled=true;
    }
    else if (value=='no') {
        document.getElementById(site2).style.display = "inline";
        document.getElementById(site2).style.display = "none";
    }
}
}
    </script>

并创建了一个下拉框。它应该在选择否时显示

<label><span>Single Site?</span><Select name="field" onchange="showHide(this.selectedIndex);"></label>
 <Option value="yes">yes</option>
 <Option value="no">no</option>
 </Select><br /><br /><br /><br />

但是,当我运行该页面时,什么也没有发生

4

2 回答 2

5

您正在传递 selectedIndex,但您正在检查它,就好像它是值一样......试试这个:

<Select name="field" onchange="showHide(this.value);"></label>

或者尝试在处理之前从项目中检索值:

function showHide(selectedIndex) {
    var value = document.getElementById("field").options[selectedIndex].value;

    if (value=='yes') {
        document.getElementById(site2).style.display = "none";
        document.getElementById(site2).style.display = "block";
        document.add.addSite2Line1.disabled=true;
    }
    else if (value=='no') {
        document.getElementById(site2).style.display = "inline";
        document.getElementById(site2).style.display = "none";
    }
}

Slanec 关于getElementById(site2)vs的评论getElementById("site2")也是有效的。没有看到页面的其余部分就很难判断,但是如果您没有在 Javascript 中声明名为 site2 的变量,那么您可能会收到其他错误。

于 2012-07-28T05:20:59.263 回答
-1

它非常简单,只需要在之前移除额外的大括号

function showHide(value) {
if (value=='yes') {
        document.getElementById(site2).style.display = "none";
        document.getElementById(site2).style.display = "block";
        document.add.addSite2Line1.disabled=true;
    }
    else if (value=='no') {
        document.getElementById(site2).style.display = "inline";
        document.getElementById(site2).style.display = "none";
    }
}
于 2012-07-28T06:48:01.723 回答