【问题标题】:I want to loop through an array and modify attributes我想遍历一个数组并修改属性
【发布时间】:2011-03-09 15:12:29
【问题描述】:

这是我的代码

var input_buttons = ["#one","#two","#three"]; 
var substr = input_buttons.split(',');
for(var i=0; i< substr.length; i++) 
{
   substr.attr('value', '');
}

为什么这不起作用?

【问题讨论】:

  • 您需要告诉我们,您的代码应该做什么,因为这根本没有任何意义。 input_buttons 是一个数组,而数组没有方法 split。字符串确实有一个方法split,它返回一个数组,而数组也没有一个方法attr

标签: javascript jquery arrays loops


【解决方案1】:

您的第一个问题是在数组上调用 split(',')。但是,如果您只想将所有这些值设置为空白字符串,您可以这样做:

$('#one,#two,#three').val('');

如果你想设置不同的值,你需要循环:

$('#one,#two,#three').each(function() {
  // this == the HTML node (not a jQuery element)
  this.value = someValue; // someValue would set outside
};

【讨论】:

    【解决方案2】:

    你已经有一个数组,没有什么可以拆分的,这只适用于字符串。您还必须将 ID 传递给 jQuery,然后才能调用 attr。在这种情况下val 更好。

    var input_buttons = ["#one","#two","#three"]; 
    for(var i=input_buttons.length; i--;) {
       $(input_buttons[i]).val('');
    }
    

    但更短的是使用multiple selector

    $('#one, #two, #three').val('');
    

    或者如果您已经拥有该数组,请通过joining ID 创建一个字符串:

    $(input_buttons.join(',')).val('');
    

    【讨论】:

      【解决方案3】:

      我想知道你为什么打电话:

      var substr = input_buttons.split(',');
      

      根据您的 input_buttons 的性质,您已经有了一个数组。您所要做的就是:

      var input_buttons = ["#one","#two","#three"]; 
      for(var i=0; i< substr.length; i++) 
      {
         $(input_buttons[i]).attr('value', '');
      }
      

      【讨论】:

      • 字符串没有方法attr
      • @RoToRa-Doh。我总是犯那个愚蠢的错误。谢谢你的纠正。固定。
      【解决方案4】:
      var input_buttons = ["#one","#two","#three"]; 
      $.each(input_buttons, function(idx, value) {
          $(value).val('');
      });
      

      甚至更好更短:

      $('#one, #two, #three').val('');
      

      你也可以给这些元素一个通用的类名,然后使用这个:

      $('.className').val('');
      

      【讨论】:

        【解决方案5】:

        你的数组只包含 id 而不是实际的对象 试试这个

        var input_buttons = ["#one","#two","#three"]; 
        
        for(var i=0; i< input_buttons.length; i++) 
        {
           $(input_buttons[i]).removeAttr('value');
        }
        

        【讨论】:

          【解决方案6】:

          input_buttons 已经是一个数组 - 不要split 它。

          要使用.attr,你需要它是一个jquery对象,所以调用$(input_buttons[i]).attr

          【讨论】:

            【解决方案7】:

            尝试以下方法删除属性:

            var input_buttons = ["#one","#two","#three"]; 
            for(var i=0; i< input_buttons.length; i++) 
            {
               $(input_buttons[i]).removeAttr('value');
            }
            

            您的代码不起作用的原因是 jQuery 函数的重载。 .attr('value', '') 计算结果为 .attr('value'),它返回 value 的值而不是设置它。原因是 '' 的计算结果为 false

            【讨论】:

            • 谢谢,从来不知道 removeAttr,但我的问题仍然存在于您的代码中。这不是 substr.removeAttr('value');或 substr.attr('value', '');我觉得但可能是语法错误?
            • substr 不是 jquery 对象。需要初始化
            • substr 在您的代码中没有定义。当然.attr('value', '') 应该将value 的值设置为空字符串。
            猜你喜欢
            • 1970-01-01
            • 2020-12-23
            • 1970-01-01
            • 2013-06-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多