我有8个divs
id =" div1"," div2"," div3" .... 和 class = divs 。我还有button
class =" div1"," div2"," div3" .....
当我点击button
id =" div1" 时,它会首先删除所有 class =" selected" 到拥有 class =" divs" 的所有div
,然后只有div
id =" div1& #34; 将选择class
。等等......
我想使用document.getElementByClass()
删除class
,但它无法在 FIDDLE 中使用。 :(
相反,我被迫使用document.getElementsByClassName()[]
。但是编码似乎很难,因为它要求我为classname
添加特定的数组。
这正是我想要实现 FIDDLE
答案 0 :(得分:4)
由于某种原因,没有getElementByClass
:与id
不同,class
未在文档中指定为唯一。你会得到哪个元素?不,你需要能够获得所有这些。如果你得到一个数组,那就通过循环来解决,而不是通过重复每个索引的行来解决:
然而,您的设计效率低下;如果你已经在使用jQuery,你可以非常紧密地编写它。这会更好:
<button class="divbuttons" data-div="div1">div1</button>
<button class="divbuttons" data-div="div2">div2</button>
...
然后你可以:
$(document).ready(function(){
$('.divbuttons').click(function() {
var div = $(this).data("div");
$('.divs.selected').removeClass('selected');
$('#' + div).addClass('selected');
});
});
答案 1 :(得分:3)
这很简单。没有document.getElementByClass
您有document.getElementById
或document.getElementByClassName
答案 2 :(得分:2)
没有getElementByClass()这样的东西,因为多个元素可以具有相同的类。 getElementById()(元素具有唯一ID,或者至少它们应该是)和getElementsByClassName(),它返回与指定类匹配的所有元素的数组。
答案 3 :(得分:1)
试
$(document).ready(function () {
$("button[class^=div]").click(function () {
$(".divs.selected").removeClass("selected");
$("#" + $(this).attr("class")).addClass("selected");
});
});