Javascript 如何获取读取元素上的数据的特定变量?

Javascript 如何获取读取元素上的数据的特定变量?,javascript,jquery,html,Javascript,Jquery,Html,我的站点上有一些字段,它们是相同的,但是每个字段都应该用它的值更新一些jquery变量 <input data-atribute="for"></input> <input data-atribute="int"></input> <input data-atribute="agi"></input> 我不知道怎么做。 为每个输入创建不同的函数似乎很愚蠢 提前谢谢 使用jQuery的.attr功能: $( "input"

我的站点上有一些字段,它们是相同的,但是每个字段都应该用它的值更新一些jquery变量

<input data-atribute="for"></input>
<input data-atribute="int"></input>
<input data-atribute="agi"></input>
我不知道怎么做。 为每个输入创建不同的函数似乎很愚蠢


提前谢谢

使用jQuery的
.attr
功能:

$( "input" ).focusout(function() {
    let data-atribute-of-the-element = $(this).attr('data-atribute');
})

使用jQuery的
.attr
功能:

$( "input" ).focusout(function() {
    let data-atribute-of-the-element = $(this).attr('data-atribute');
})
那么:

var for = "0";
var int = "0";
var agi = "0";

$( "input" ).focusout(function(s) {
  switch ($(this).attr('data-attribute')) {
    case 'for':
      for = $(this).val();
      break;
    case 'int':
      int = $(this).val();
      break;
    case 'agi':
      agi = $(this).val();
      break;
  }

  //OR
  var t = $(this).attr('data-attribute');
  if (t == 'for') for = $(this).val();
  else if (t == 'int') int = $(this).val();
  else if (t == 'agi') agi = $(this).val();
})
PS:“阿曲布他”有两个t:属性

怎么样:

var for = "0";
var int = "0";
var agi = "0";

$( "input" ).focusout(function(s) {
  switch ($(this).attr('data-attribute')) {
    case 'for':
      for = $(this).val();
      break;
    case 'int':
      int = $(this).val();
      break;
    case 'agi':
      agi = $(this).val();
      break;
  }

  //OR
  var t = $(this).attr('data-attribute');
  if (t == 'for') for = $(this).val();
  else if (t == 'int') int = $(this).val();
  else if (t == 'agi') agi = $(this).val();
})

PS:“atribute”有两个t:属性

创建一个对象,该对象有一个作为变量的字段。像下面这样

var a={'for':'0','int':'0','agi':'0'}
$(“输入”).focusout(函数(){
a[$(this.attr('data-atribute')]=$(this.val();
控制台日志(a.for);
console.log(a.int);
console.log(a.agi);
})

创建一个对象,该对象包含一个作为变量的字段。像下面这样

var a={'for':'0','int':'0','agi':'0'}
$(“输入”).focusout(函数(){
a[$(this.attr('data-atribute')]=$(this.val();
控制台日志(a.for);
console.log(a.int);
console.log(a.agi);
})

.attr()
确实有效,但由于您仍在使用数据属性,因此也可以使用为它们设计的
.data()
函数

有关说明,请参见代码段中的注释:

/*设置一个对象以包含要捕获的值。
这意味着我们不必预先定义所有变量或参数
分别设置它们;这也意味着你可以使用保留字
比如“for”,它本身不能作为变量工作:*/
var capturedValues={};
$(“输入”).focusout(函数(){
//这将获取“data atribute”属性的内容:
var theName=$(this.data(“atribute”);
//这将捕获当前输入字段的值,
//并使用名称作为键将其放入capturedValues对象中:
capturedValues[theName]=$(this.val();
//稍后,您可以将其引用为capturedValues.agi
//显示结果(仅用于演示):
console.log(capturedvalue);
})

.attr()
确实有效,但由于您仍在使用数据属性,因此也可以使用为它们设计的
.data()
函数

有关说明,请参见代码段中的注释:

/*设置一个对象以包含要捕获的值。
这意味着我们不必预先定义所有变量或参数
分别设置它们;这也意味着你可以使用保留字
比如“for”,它本身不能作为变量工作:*/
var capturedValues={};
$(“输入”).focusout(函数(){
//这将获取“data atribute”属性的内容:
var theName=$(this.data(“atribute”);
//这将捕获当前输入字段的值,
//并使用名称作为键将其放入capturedValues对象中:
capturedValues[theName]=$(this.val();
//稍后,您可以将其引用为capturedValues.agi
//显示结果(仅用于演示):
console.log(capturedvalue);
})


谢谢大家!这里的每一个解决方案都很有效,但我使用的是非常棒的解决方案,因为使用我的代码将更容易锻炼。谢谢大家!这里的每个解决方案都很有效,但我使用的是Kickass解决方案,因为使用我的代码可以更容易地解决问题。