繁体   English   中英

动态设置全局JS变量

[英]Dynamically set global JS variables

我想知道如何动态设置 JS 值。 为了更好地理解我想要完成的任务,这里有一个 php 示例:

$first;
$second;
$third;

$my_array = ('first' => 'val_1','second' => 'val_2','third' => 'val_3');
foreach ($my_array as $key => $value){
  $$key = $value;
}

假设您有大量带有 html 格式的唯一 ID 的输入框,并且您想使用 jquery 或 js 将 id 用作全局变量,这时我有点困惑如何从每一个说法。

我想通过js识别的html类型。

<input id='first' value='val_1'>
<input id='second' value='val_2'>
<input id='third' value='val_3'>

JS/jquery 代码

var first;
var second;
var third;

$('input').each(function(){
  var item_id = $(this).attr('id');
  var item_value = $(this).attr('value');

  /* now what... */
});

在 php 示例中,额外的美元符号使美元表示我想填充一个名为 $key 中存储的变量的变量。 我想知道是否可以用 JS 或 jquery 来完成同样的工作。

目的是仅通过向 HTML 表单添加输入来管理值的数量,而无需大量更改 JS 代码。

您可以使用eval函数

var first;
var second;
var third;

$('input').each(function(){
  var item_id = $(this).attr('id');
  var item_value = $(this).attr('value');
  eval(item_id+'='+item_value);
});

例如

 var v1 = 'first'; var v2 = 'second'; var val1 = 10; var val2 = 20; var first; var second; eval(v1+'='+val1); eval(v2+'='+val2); console.log('first='+first,'second='+second);

这不是 PHP 或 JavaScript 的良好编程风格。 只需使用数组:

 var values = []; $('input').each(function() { var item_id = $(this).attr('id'); var item_value = $(this).attr('value'); values[item_id] = item_value; }); console.log('first = ' + values['first'] + ', second = ' + values['second']);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <label for="first">First: </label> <input id="first" type="text" value="hello" /> <label for="second">Second: </label> <input id="second" type="text" value="world!" /> <label for="third">Third: </label> <input id="third" type="text" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM