2015-01-13 44 views
0

我只是想问,如果我们有多个具有相同ID的div如何使用javascript显示它们?将javascript函数应用于相同ID

我想:

<script> 
function filterfunc() { 
if(document.getElementById('filter_deductible').value == 'id_50'){ 

document.getElementById('id_0').style.display = 'none'; 

document.getElementById('id_50').style.display = 'block'; 
} 
} 
</script> 

这里是我的html的div相同的标识:

<div id="id_0">0</div> 
<div id="id_0">0</div> 
<div id="id_50">50</div> 

但其hidding唯一ID ID_0而不是所有的一个DIV DIV有ID_0

任何建议请

+2

你的问题是你的标题 –

+4

应用类代替。你的代码中应该有唯一的ID! –

+2

两个元素,相同的ID?馊主意。假设ID是 –

回答

0

简单使用jQuery像

HTML

<select name="filter_deductible" id="filter_deductible"> 
    <option value="id_0">0</option> 
    <option value="id_50">50</option> 
</select> 
<div id="id_0">0</div> 
<div id="id_0">0</div> 
<div id="id_50">50</div> 

jQuery的

$("#filter_deductible").change(function(){ 
    if($(this).val()=="id_50") 
    { 
    $('[id="id_0"]').hide(); 
    } 
}); 

Demo

1

身份证必须是唯一的,你应该使用类,

<div class="id_0">0</div> 
<div class="id_0">0</div> 
<div class="id_50">50</div> 

,并隐藏所有id_0使用

function filterfunc() { 
    if($('#filter_deductible').val() == 'id_50'){ 
     $('div.id_0').hide(); 
     $('div.id_50').show(); 
    } 
} 
0

你应该使用的情况下有多个元素的类。或者使用不同的ID。

我的意思是独特的。

<script> 
function filterfunc() { 
if(document.getElementById('filter_deductible').value == 'id_50'){ 

$('.id_0').css("display","none") 

$('.id_50').css("display","block") 
} 
} 
</script> 


<div class="id_0">0</div> 
<div class="id_0">0</div> 
<div class="id_50">50</div> 

或者

<script> 
    function filterfunc() { 
    if(document.getElementById('filter_deductible').value == 'id_50'){ 

    $('.id_0').hide() 

    $('.id_50').css("display","block") 
    } 
    } 
    </script> 


    <div class="id_0">0</div> 
    <div class="id_0">0</div> 
    <div class="id_50">50</div> 
+0

什么是$('。id_0').style'? –

+0

正在编辑答案 –

0

做到这一点。具有相同ID的多个元素会导致未定义的行为。如果您需要将信息附加到您的圆顶节点,请使用数据属性或类。 请注意getElementById是单数形式吗?它只希望选择并返回一个元素。

话虽这么说,你也许可以,如果你想使用你必须使用类没有id属性的DOM元素JavaScript函数逃脱

document.querySelectorAll("#id_0") 
+0

否则,即使是'document.querySelectorAll(“[id = id_0]”)'也可以工作,就像您提到它一样,使用重复ID是错误的 –

0

id属性在整个html文档中是唯一的。

尝试使用jquery。

$.(document).ready(function(){ 
    $("#filter_deductible").change(function(){ 
     var $this = $(this); //instance of element where was changed value 
     if($this.val() == 'id_50'){ 
      $(".id_0").hide(); 
      $(".id_50").show(); 
     } 
    }); 
}); 

您的文档html应该看起来像。

<div class="id_0">0</div> 
<div class="id_0">0</div> 
<div class="id_50">50</div> 

只有当您将jquery库包含在标记中时,这才有效。而你的dom元素#filter_deductible允许更改事件触发器。

希望我帮你

0

在这种情况下使用类ID是唯一的。

<div class="zero">0</div> 
<div class="zero">0</div> 
<div class="class_50">50</div> 

你可以使用jQuery:

$('.zero').hide(); 
$('.class_50').show(); 
0

HTML规范要求ID属性是唯一一个页面:

如果你想有一个具有相同ID代码不会因为工作的几个要素方法getElementByID只返回一个值,ID的唯一性。如果您有两个具有相同值的ID,那么您的HTML无效。

,你会想要做的是使用DIV CLASS =“ID_0”,使用方法getElementsByClassName方法,因为这将返回元素的数组

function filterFunc() { 
    var n = document.getElementsByClassName("id_0"); 
    var a = []; 
    var i; 
    while(n) { 
     // Do whatever you want to do with the Element 
     // This returns as many Elements that exist with this class name so `enter code here`you can set each value as  visible. 
    } 

} 
相关问题