如何以不同的方式声明javascript变量

如何以不同的方式声明javascript变量,javascript,jquery,variables,Javascript,Jquery,Variables,如何以这种方式声明变量: var sarr = $("#crop_vals").find("input"); $(sarr).each(function() { var $(this).attr("id") = $(this).val(); }); 我想要的是让var将id命名为与该值等效的id。为属性赋值的语法错误,需要使用attr'attributeName',value' 改变 到 您的代码将是 var sarr=$("#crop_vals").find("input"); $

如何以这种方式声明变量:

var sarr = $("#crop_vals").find("input");
$(sarr).each(function() { 
    var $(this).attr("id") = $(this).val();
});
我想要的是让var将id命名为与该值等效的id。

为属性赋值的语法错误,需要使用attr'attributeName',value'

改变

您的代码将是

var sarr=$("#crop_vals").find("input");
$(sarr).each(function(){ 
     $(this).attr("id",$(this).val());
});

您不能以这种方式设置元素的属性,您将获得一个值

var $sarr = $("#crop_vals").find("input");

$sarr.each(function() { 
    this.id = this.value;
})
请注意,由于缓存了对象,因此无需再次使用$

设置属性:

$(selector).attr('id', 'newValue');
var id = $(selector).attr('id');
获取属性:

$(selector).attr('id', 'newValue');
var id = $(selector).attr('id');
您还可以使用attr回调函数:

$sarr.attr('id', function() { 
    return this.value;
})

全局设置变量,但不应该这样做,因为这会带来麻烦

var sarr = $("#crop_vals").find("input");
$(sarr).each(function() { 
    window[ this.id ] = this.value;
});
要以更安全的方式设置它们,您可以

var sarr = $("#crop_vals").find("input"),
    myVars = {};
$(sarr).each(function() { 
    myVars[ this.id ] = this.value;
});

并使用myVars[id]进行访问。

var$this.attrid$this.val;嗯,什么?在评论中要讽刺,而不是答案。我已经更新了我的答案,id分配有问题。然后不要只是从OP复制代码,并将其转储到您的答案中,而不进行编辑:@Squirkle感谢您的建议,但复制是一个很难避免的功能,而且在大多数情况下都很有用。您不应该这样做,但我还是要说;窗口[$this.attrid]=$this.val;,没有var语句。+1。这是一个合理的问题。但是,您编写它的方式是无效代码。例如,在其上运行JSLint会导致错误的分配。var$this.attrid=$this.val;使用您现有的代码,对您的代码进行最少的更改以解决该问题,即$this.attrid、$this.val;添加了一个答案,因为所有其他答案都将您的问题解释为如何设置ID?,而我的理解是如何创建一个与ID同名的变量,并将其设置为具有所述ID的元素的值?@Squirkle您至少可以阅读一本教育书籍,如Elount Javascript,以真正了解您在实践中所做的事情。退房