Javascript 在'中动态设置类;不行?

Javascript 在'中动态设置类;不行?,javascript,html,css,class,anchor,Javascript,Html,Css,Class,Anchor,我一直在尝试动态地将类名添加到锚中,但不知何故,它不起作用。我的代码是: HTML: JavaScript: $(document).ready(function() { var setActive = document.getElementById('setActive'), var anchor = setActive.getElementsByTagName('a'), for (var i = 0; i < anchor.length; i++)

我一直在尝试动态地将类名添加到锚中,但不知何故,它不起作用。我的代码是:

HTML:


JavaScript:

 $(document).ready(function() {

    var setActive = document.getElementById('setActive'),
    var anchor = setActive.getElementsByTagName('a'),

    for (var i = 0; i < anchor.length; i++) {

        anchor[i].className = "list-item";
    }
 }
$(文档).ready(函数(){
var setActive=document.getElementById('setActive'),
var anchor=setActive.getElementsByTagName('a'),
对于(变量i=0;i

请帮助!

因为我看到您正在使用jQuery,所以您可以将代码简化为:

$(document).ready(function() {
    $( '#setActive a' ).addClass( 'list-item' );
});
试试这个

$(document).ready(function() {
    var anchors = document.getElementsByTagName('a');

    for (var i = 0; i < anchors.length; i++) {
        anchors[i].className = "list-item";
    }
 }
$(文档).ready(函数(){
var archors=document.getElementsByTagName('a');
对于(var i=0;i

这将为您提供一个包含DOM中存在的所有锚定标记的数组。

不需要Jquery,只需使用这样的DOM选择器即可

var setActive = document.getElementById('setActive'),
    anchors = setActive.querySelectorAll('a');
for (var i = 0; i < anchors.length; i++)
    anchors[i].className = "list-item";
var setActive=document.getElementById('setActive'),
anchors=setActive.querySelectorAll('a');
对于(var i=0;i
您的代码有不同类型的问题,首先您需要用完成声明;而不是,即使您想使用,也不必再次从var开始

如果您只使用JQuery来检查dom负载,那么可以使用此选项跳过它


由于您似乎不想使用jQuery,这是一个本机版本,您只是有一些小的语法错误,代码一般都很好!我对如何使用jQuery做了一些更改,但总体结构完好无损

HTML

JAVASCRIPT

document.addEventListener('DOMContentLoaded', function() {

    var setActive = document.querySelector('#setActive'),
        anchors = setActive.querySelectorAll('a');

    [].forEach.call(anchors, function(anchor) {
        anchor.classList.add("list-item");
    });

});

参考此小提琴:

您的代码无法工作的主要原因是sytax错误。下面对其进行清理:

$(document).ready(function() {

    var setActive = document.getElementById('setActive'),
        anchor = setActive.getElementsByTagName('a');

    for (i = 0; i < anchor.length; i++) {
        anchor[i].className = "list-item";
    }

 });
还要确保在JS文件中将$sign正确映射到jQuery:

(function($) {
    // docready etc etc here
}(jQuery));

希望这有帮助。

逗号
的可能重复,每个
var
声明后面的
应该是分号
。他们正在创建语法错误,因为解析器希望后面跟着另一个变量,而不是为
查找关键字
var
准备()
也丢失在您发布的内容中。修复这些内容后,它应该可以正常工作。出于某些原因,尝试了此操作“列表项”未设置什么?举个例子:-如果这对您不起作用,很可能您有不同的问题。对我来说效果很好。请参阅此JSFIDLE:您确定已将jQuery连接到您的页面吗?@antyrat haha,几乎相同的FIDDLS:-)查看控制台,可能有一些错误,向我们显示更多代码或提供FIDLE。很难说是,但问题是在我的网页上,我有一大堆其他的锚,我不想设置。这就是为什么我指定了一个ID。那么Benjamin给出的答案应该可以。虽然所有其他答案都很好,但我认为语法错误是我的案例中的主要问题。谢谢大家!
document.addEventListener('DOMContentLoaded', function() {

    var setActive = document.querySelector('#setActive'),
        anchors = setActive.querySelectorAll('a');

    [].forEach.call(anchors, function(anchor) {
        anchor.classList.add("list-item");
    });

});
$(document).ready(function() {

    var setActive = document.getElementById('setActive'),
        anchor = setActive.getElementsByTagName('a');

    for (i = 0; i < anchor.length; i++) {
        anchor[i].className = "list-item";
    }

 });
$(document).ready(function() {
    $('#setActive a').addClass('list-item');
});
(function($) {
    // docready etc etc here
}(jQuery));