如何在javascript函数中使用局部变量
如果术语不适用,我道歉-javascript不是我的事 我有一个功能:如何在javascript函数中使用局部变量,javascript,jquery,Javascript,Jquery,如果术语不适用,我道歉-javascript不是我的事 我有一个功能: var input = { getVal: function () { return $(this).attr("data-current-val"); }, setVal: function () { $(this).attr("data-current-val", $(this).val()); }, valH
var input = {
getVal: function () {
return $(this).attr("data-current-val");
},
setVal: function () {
$(this).attr("data-current-val", $(this).val());
},
valHasChanged: function () {
return $(this).val() !== $(this).attr("data-current-val");
}
};
正如你所看到的,有一些重复。首先,我多次重复数据属性
名称;其次,我多次选择一个jquery对象
我试图消除重复。例如,对于数据属性,在顶部添加节点:“数据当前值”
,然后用此.node
代替字符串调用它。这会导致错误,尝试以相同的方式定义并使用jquery对象时也是如此
类似地,valHasChanged$(this).attr(“data current val”)
中的布尔值的一部分在逻辑上可以被this.getVal
替换,但这似乎也不起作用。我哪里出错了
非常感谢您的帮助。您想实现什么目标?确实需要一些上下文。上面的代码是更大解决方案的一部分。它与文本框数据更改相关(jqueryonchange方法不能按需要工作)。这些只是从输入中获取、设置和比较数据的小函数。这确实是我试图纠正的模式,并理解某些东西不能按我认为的方式工作的原因。尝试window.input.node
。如果不将该方法调用为input.hasvalchange()
,但将this
指向DOM元素(例如,当将其用作事件侦听器时),则不能在valHasChanged
中使用this.getVal()
。只需参考input.getVal
,使用input.getVal.call(this)
。或者,不要使用对象,而是将属性名称之类的内容存储在单独的常量中。