Javascript 使用数组值作为变量名

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();

我需要使用jQuery的keyup函数从输入的html表单元素中获取值,并在其他地方的div中显示所述值

工作代码如下所示:

$('#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中的每个函数:

这对你来说应该容易得多-