Javascript 在jquery data()对象上循环,并将值写入以key作为变量名的变量中

Javascript 在jquery data()对象上循环,并将值写入以key作为变量名的变量中,javascript,jquery,jquery-data,Javascript,Jquery,Jquery Data,考虑一个具有HTML5数据属性的html元素,如: <div id="thediv" data-id="somenumber" data-lang="somestring" data-foo="" data-bar="somestring"></div> 我的代码如下所示: var itm = $("#thediv"); $.each(itm.data(), function(k,v) { eval("var " + k + " = '" + v + "';"); })

考虑一个具有HTML5数据属性的html元素,如:

<div id="thediv" data-id="somenumber" data-lang="somestring" data-foo="" data-bar="somestring"></div>
我的代码如下所示:

var itm = $("#thediv");
$.each(itm.data(), function(k,v) {
eval("var " + k + " = '" + v + "';");
});
第一:

我需要引用这些值,因为如果有一个空值,我会得到一个错误。但这没关系,因为我只需要字符串形式的值,如果需要,我可以在后面的代码部分中重新分析它们

问题是我没有得到变量。假设我想看看我做的输出

console.log("id =" + id);

我得到“id未定义”

您的代码的问题是它在
jQuery中定义变量。每个
块,您都试图在块外访问它

因此,尝试使用eval中的
窗口将变量设置为全局变量

JS:-

var itm = $("#thediv");
$.each(itm.data(), function (k, v) {
    eval("window." + k + " = '" + v + "';");
});

我个人应该使用“.data()”函数将数据保存在“body”标记中

你可以很容易地检索数据

alert( $( "body" ).data( "varName" ) );

只是为了确保避免任何转义问题:eval(“window.+k+”=v;”@伯恩哈德克劳斯:这能回答你的问题吗?谢谢。我的…“窗口”是解决方案…现在效果很好。谢谢你的编辑,拉姆。
var itm = $("#thediv");
  $.each(itm.data(), function (k, v) {
  $( "body" ).data( k, v );
});
alert( $( "body" ).data( "varName" ) );