Javascript 我声明了一个变量,但它“未定义”

Javascript 我声明了一个变量,但它“未定义”,javascript,jquery,Javascript,Jquery,我觉得自己像个十足的白痴。有人能告诉我为什么这不起作用吗 $(document).ready(function() { var className = $(this).attr('id'); $(":button").addClass(className); }); 这听起来可能很愚蠢,但我想做的是选择页面上的所有按钮,并使用与已附加的id相同的确切名称将类名附加到页面上 它不工作,当我打开控制台键入className时,它告诉我className没有定义 有人能告诉我为什么这被否决了吗

我觉得自己像个十足的白痴。有人能告诉我为什么这不起作用吗

$(document).ready(function() {

var className = $(this).attr('id');
$(":button").addClass(className);


});
这听起来可能很愚蠢,但我想做的是选择页面上的所有按钮,并使用与已附加的id相同的确切名称将类名附加到页面上

它不工作,当我打开控制台键入className时,它告诉我className没有定义

有人能告诉我为什么这被否决了吗?或者为什么我的大多数问题都被否决了,没有任何理由导致我被禁止提问


stackoverflow是垃圾,还是仅仅是使用它的人是垃圾?这真的很令人沮丧。

你的错误是你没有空间应用你的想法$在您的情况下,这个范围将依赖于窗口对象或一些东西,您不希望这样。使用每个函数,您可以在所需的正确范围内实现您想要的。请尝试以下操作:

$(document).ready(function() {
$("button").each(function(){
     $(this).addClass($(this).attr('id'));
});

});
您当前的$this未指向任何按钮。您需要将分配嵌套在一个.each循环中,该循环将作为循环的按钮迭代器:

$(document).ready(function() {
    $(':button').each(function(i, obj) {
        var currID = $(this).attr('id');
        $(this).addClass(currID);
    });
});

这是什么和变量?这工作得很好!所以,每一种都是一种非常简单的循环方式?我不必尝试创建一个for循环来遍历所有选定的按钮,我只需使用。每个。它将我的函数应用于它找到的每个按钮?有一个问题,为什么我不用用冒号做$:按钮?是的,每一个都是最简单的循环!每个都是foreach等价的,通过对象,对其应用匿名函数或其他函数。我删除了冒号,因为您想要的作用域是全局的,所以您不需要它。啊,请记住:$运算符已经在屏幕上搜索标识符,但是您的例程非常具体,因此您需要每一个。$'按钮“.addClass='test”将向所有按钮添加测试类,而不需要任何其他详细信息。