Javascript 使用数组值作为变量名
我需要使用jQuery的keyup函数从输入的html表单元素中获取值,并在其他地方的div中显示所述值 工作代码如下所示:Javascript 使用数组值作为变量名,javascript,jquery,Javascript,Jquery,我需要使用jQuery的keyup函数从输入的html表单元素中获取值,并在其他地方的div中显示所述值 工作代码如下所示: $('#name').keyup(function() { var name = $(this).val(); $('#name-in-document').html(name); }); 由于上面的代码块有许多相同的实例,所以我想使用for循环来循环一个值数组。catch是第二行中变量的名称 var name = $(this).val();
$('#name').keyup(function() {
var name = $(this).val();
$('#name-in-document').html(name);
});
由于上面的代码块有许多相同的实例,所以我想使用for循环来循环一个值数组。catch是第二行中变量的名称
var name = $(this).val();
将来自阵列
我尝试了以下循环,但不起作用,因为据我所知,Javascript变量不能命名为数组值:
var inputsArray = ["phone", "name", "address"];
for (var i = 0; i < inputsArray.length; i++) {
$("#"+inputsArray[i]).keyup(function() {
var inputsArray[i] = $(this).val();
$("#"+inputsArray[i]+"-in-document").html(inputsArray[i]);
})
})
所以我有两个问题:
我不能使用数组值在for循环中创建变量,这是真的吗?
是否有另一种方法可以完成同样的任务,从数组中获取可能有效的变量名?
我刚刚开始使用JavaScript,非常感谢您的见解。谢谢大家! 试试这个:
var inputsArray = ["phone", "name", "address"];
for (var i = 0; i < inputsArray.length; i++) {
$("#"+inputsArray[i]).keyup(function() {
var valuesArray[i] = $(this).val();
$("#"+inputsArray[i]+"-in-document").html(valuesArray[i]);
})
试试这个:
var inputsArray = ["phone", "name", "address"];
for (var i = 0; i < inputsArray.length; i++) {
$("#"+inputsArray[i]).keyup(function() {
var valuesArray[i] = $(this).val();
$("#"+inputsArray[i]+"-in-document").html(valuesArray[i]);
})
该变量只存在于作为keyup事件回调传递的函数的范围内,因此我认为没有必要给它一个动态名称;您完全可以调用它,而不会发生冲突。该变量仅存在于作为keyup事件回调传递的函数范围内,因此我认为没有必要给它一个动态名称;你可以称之为绝对的任何东西,而不是陷入冲突
var inputsArray = ["phone", "name", "address"];
for (var i = 0; i < inputsArray.length; i++) {
$("#"+inputsArray[i]).keyup(function() {
var htmlValue = $(this).val();
$("#"+inputsArray[i]+"-in-document").html(htmlValue);
})
我认为您不需要从数组中命名变量,是吗
我认为您不需要从数组中命名变量,是吗?1。这不是真的
2.您需要对变量i或inputArray[i]中的值进行闭包,并在事件绑定中使用关键字this引用触发事件的DOMNode witch:
在这里阅读更多Absolut闭包
一,。这不是真的
2.您需要对变量i或inputArray[i]中的值进行闭包,并在事件绑定中使用关键字this引用触发事件的DOMNode witch:
在这里阅读更多Absolut闭包
您可以直接从数组构建选择器,并完全跳过循环。使用当前输入的id为其他元素创建选择器
var inputsArray = ["phone", "name", "address"];
$('#'+ inputsArray.join(',#') ).keyup(){
$('#'+this.id+"-in-document").html( $(this).val() );
})
这将创建选择器:
$('#phone,#name,#address')
以上假设您正在尝试查找元素:
$("#phone-in-document").html(val);
$("#name-in-document").html(val);/* etc*/
您可以直接从数组构建选择器,并完全跳过循环。使用当前输入的id为其他元素创建选择器
var inputsArray = ["phone", "name", "address"];
$('#'+ inputsArray.join(',#') ).keyup(){
$('#'+this.id+"-in-document").html( $(this).val() );
})
这将创建选择器:
$('#phone,#name,#address')
以上假设您正在尝试查找元素:
$("#phone-in-document").html(val);
$("#name-in-document").html(val);/* etc*/
对于另一种方法,我建议给name和他的朋友起一个类名,例如
<input class="js-key-up" id="name" />
JavaScript
我已经把代码输入了。对于另一种方法,我建议给name和他的朋友起一个类名,例如
<input class="js-key-up" id="name" />
JavaScript
我已经输入了代码。@Wes Cossick:循环中的这一行是错误的:
var valuesArray[i] = $(this).val();
如果要这样做,请在循环之前声明数组。这就是OP的问题
@戴安娜:如果我理解你的意思是正确的,你想给数组中的每一项添加一个动态键控处理程序吗?如果是这样的话,代码就应该这样做,不要重新分配数组中的项!诀窍是创建一个未经测试的闭包代码
var inputsArray = ["phone", "name", "address"];
for (var i = 0; i < inputsArray.length; i++) {
(function(item) {
$("#"+item).keyup(function() {
$("#"+item+"-in-document").html($(this).val());
});
})(inputsArray[i]);
};
如果您使用的是jQuery,而且看起来是这样;-,看看jQuery中的每个函数:
这对你来说应该容易得多- @Wes Cossick:循环中的这一行是错误的:
var valuesArray[i] = $(this).val();
如果要这样做,请在循环之前声明数组。这就是OP的问题
@戴安娜:如果我理解你的意思是正确的,你想给数组中的每一项添加一个动态键控处理程序吗?如果是这样的话,代码就应该这样做,不要重新分配数组中的项!诀窍是创建一个未经测试的闭包代码
var inputsArray = ["phone", "name", "address"];
for (var i = 0; i < inputsArray.length; i++) {
(function(item) {
$("#"+item).keyup(function() {
$("#"+item+"-in-document").html($(this).val());
});
})(inputsArray[i]);
};
如果您使用的是jQuery,而且看起来是这样;-,看看jQuery中的每个函数:
这对你来说应该容易得多-