繁体   English   中英

不明白为什么警报会给我正确的结果,而函数无法执行javascript

[英]Don't understand why alert gives me correct result, while function doesn't execute javascript

我有三个按钮。 想法是在单击#1时更改ID为11和12的按钮上的文本。

$(document).ready(function() {
    var dict = {#1: ['#11', '#12']}

    $('button').click(function () {
        var k = dict['#'+$(this).attr('id')]

        for (c in k){
            var m = k[c]
            $(m).button('it works')
        }
    })
});

现在的问题是:如果我调用alert(m) ,我会得到正确的结果,但它不适用于$(m).button('it works') 知道为什么吗?

与您的代码相关的示例HTML:

<button id="1">
  Ohay
</button>

<button id="11">
  hehe
</button>

<button id="12">
  haha
</button>

正确的javascript:

$(document).ready(function() {
  var dict = {'#1': ['#11', '#12']}

  $('button').click(function () {
      var k = dict['#'+$(this).attr('id')]
      for (c = 0; c < k.length; c++){
          var m = k[c]
          $(m).text('it works')
      }
  })
});

据我所知, .button原型不是标准的jQuery原型,因此我可能怀疑您想使用.text来代替。

此外,请注意,尽管应该在常规情况下使用for来更改for..in循环(因为您正在循环一个array ,而不是object ), 但是在特定情况下它可以工作,请检查此作为参考: 为什么不我用for..in与数组

工作提琴:

https://jsfiddle.net/gLnfo2h8/

使用$(m).text('it works') .button()不是jQuery函数

如果mbutton目标,那么您所需要做的就是设置它的value

jQuery has no function called button. the right solution would be:
$(m).text('some text')

如果按钮实际上是<input type='button'那么您可能需要执行以下操作:

$(m).val('some text')

解决方案将是这样的:

$(document).ready(function() {
var dict = {#1: ['#11', '#12']}

$('button').click(function () {
    var k = dict['#'+$(this).attr('id')]

    for (c in k){
        var m = k[c]
        $(m).val('it works')
    }
})
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM