我在这里做错了什么( 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