jQuery技术:单击多个按钮之一,将值放入文本输入

我在这里做错了什么( https://jsfiddle.net/dsqBf/2/ )?

我正在尝试将单击按钮的值放入文本输入中。 如果单击任何按钮,则最后一个按钮的值将插入到文本输入中。

JavaScript代码:

var theButtons = $(".button"); $(theButtons).each(function(index) { currentButton = $(this); buttonValue = currentButton.val(); currentButton.click(function() { $("#theinput").val(buttonValue); }); }); 

我错过了一个我不知道的概念吗? 谢谢!

    var前缀currentButton 。 没有它,变量的值将被分配给全局范围中的变量,因为您尚未在其他任何地方声明currentButton 。 因此, currentButton的值更改为最后一个按钮的值(因为只有一个变量)。

     var theButtons = $(".button"); theButtons.each(function(index) { var currentButton = $(this); var buttonValue = currentButton.val(); currentButton.click(function() { $("#theinput").val(buttonValue); }); }); 

    其他说明:

    推荐代码(演示: http : //jsfiddle.net/dsqBf/11/ )

     var $theButtons = $(".button"); var $theinput = $("#theinput"); $theButtons.click(function() { $theinput.val(this.value); }); 

    带有$带前缀的jQuery变量,因为它是这样做的惯例。 因为$ ,你(和其他人)知道变量是一个jQuery对象,这节省了昂贵的调试时间。

    您正在使用.each()而不是基本的.click()。 查看我的更新。

     var theButtons = $(".button"); $(theButtons).click(function() { $("#theinput").val($(this).val()); }); 

    您遇到类似于闭环问题的事情,因为您的变量是全局变量。
    在执行事件处理程序时,它将访问buttonValue ,其中包含each循环的最后一次迭代的值。

    有两种方法可以解决这个问题:您可以通过预先设置var或者将代码重写为:

     $(".button").click(function() { $("#theinput").val($(this).val()); }); 

    你应该做

     var theButtons = $(".button"); theButtons.click(function(index) { var currentButton = $(this); var buttonValue = currentButton.val(); $("#theinput").val(buttonValue); }); 

    在这里摆弄https://jsfiddle.net/dsqBf/6/

    需要了解更多jQuery教程分享单击多个按钮之一,将值放入文本输入,都可以关注jQuery技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是jQuery教程分享单击多个按钮之一,将值放入文本输入相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/jquerytutorial/981197.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐