Javascript 在html表单中隐藏多个字段

Javascript 在html表单中隐藏多个字段,javascript,html,Javascript,Html,我在HTML表单中有多个具有相同id的字段,如果某个特定字段的值为1,我想隐藏它们,但它只隐藏该id的第一个字段,所有其他字段都不隐藏 <div class="form-group"> <label class="col-md-3 control-label" for="example-text-input" id="g">Days of week</label> <div class="col-md-9"> <

我在HTML表单中有多个具有相同id的字段,如果某个特定字段的值为1,我想隐藏它们,但它只隐藏该id的第一个字段,所有其他字段都不隐藏

<div class="form-group">
    <label class="col-md-3 control-label" for="example-text-input" id="g">Days of week</label>
    <div class="col-md-9">
        <div class="checkbok">
            <label for="example-checkbox1">
            <input type="checkbox" id="g" name="gender" value="monday">Monday
            </label>
        </div>
        <div class="checkbok">
            <label for="example-checkbox1">
            <input type="checkbox" id="g" name="gender" value="tuesday">Tuesday
            </label>
        </div>
        <div class="checkbok">
            <label for="example-checkbox1">
            <input type="checkbox" id="g" name="gender" value="wednesday">Wednesday
            </label>
        </div>
        <div class="checkbok">
            <label for="example-checkbox1">
            <input type="checkbox" id="g" name="gender" value="thursday">Thursday
            </label>
        </div>
        <div class="checkbok">
            <label for="example-checkbox1">
            <input type="checkbox" id="g" name="gender" value="friday">Friday
            </label>
        </div>
        <div class="checkbok">
            <label for="example-checkbox1">
            <input type="checkbox" id="g" name="gender" value="saturday">Saturday
            </label>
        </div>
        <div class="checkbok">
            <label for="example-checkbox1">
            <input type="checkbox" id="g" name="gender" value="sunday"> Sunday
            </label>
        </div>
    </div>
</div>  
<div class="form-group">
    <label class="col-md-3 control-label" for="example-text-input" id="g">Time</label>
    <div class="col-md-3">
        <select id="g" name="nod" class="form-control">
        <?php 
            for($i=1;$i<=12;$i++){
                echo"<option value='$i'>$i AM</option>"; 
            } 
            for($i=1;$i<=12;$i++){
                echo "<option value='12+$i'>$i PM</option>";
            }?>                         
        </select>
    </div>
</div>  

一周中的几天
星期一
星期二
星期三
星期四
星期五
星期六
星期日
时间

ID在文档中应该是唯一的。 将
id=“g”
更改为
class=“g”


星期六
数组.筛选器(
document.getElementsByClassName('g'),
功能(elem){
elem.style.visibility='hidden';
});

要选择具有相同id的多个字段,您必须使用-

$('[id="yourFieldId"]');
那么你的情况呢-

var ele=document.getElementById("st").value;
if(ele==1)
   $('[id="yourFieldId"]').hide();

ID在html字段中应该是唯一的,但可以具有相同的名称属性/类名。必须循环使用classname或name属性提取的元素数组

在您的情况下,使用名称属性

 function hideGender(){
     var ele=document.getElementById("st").value;
   if(ele==1){
    var elements=document.getElementsByName("gender");
    for(var i=0;i<elements.length;i++)
     elements[i].style.visibility = "hidden";
   }
 }
函数hideGender(){
var ele=document.getElementById(“st”)值;
如果(ele==1){
var elements=document.getElementsByName(“性别”);

对于(var i=0;所有元素都具有相同的id=“g”-首先修复该问题。HTML不允许这样做。可能会有帮助。请检查此页面应该只有一个具有特定ID的元素,他们不应重复。HTML文档不能有多个具有相同ID的元素。这就是为什么Javascript只查找第一个元素,然后停止。请使用类和
getElementsByClassName
相反。什么?这不起作用。非常糟糕的做法ID的全部要点是唯一的,只需使用一个类就可以了。这就是类的全部要点。我同意这是一个糟糕的做法,但是jquery会起作用,尽管最初的问题没有提到jquery@Josh史蒂文斯:我已经试过了,而且很有效。你的观点是绝对正确的非常正确,应该使用一个类来选择多个字段。但是他的要求是id,因此解决方案适合。
元素[i]…style.visibility=“hidden”
需要固定为1点
var ele=document.getElementById("st").value;
if(ele==1)
   $('[id="yourFieldId"]').hide();
 function hideGender(){
     var ele=document.getElementById("st").value;
   if(ele==1){
    var elements=document.getElementsByName("gender");
    for(var i=0;i<elements.length;i++)
     elements[i].style.visibility = "hidden";
   }
 }