我在PHP中给你我想要的东西:
foreach($myarray as $key=>$value) { ${$key} = $value; }
现在,我们可以用JS / jQuery做到吗?
这是jQuery输入,我想将classTD值作为键,换句话说,相当于上面示例中着名的PHP语句$ {$ key}:
data = {};
$('#resul_rech_doc_fact tr.document-2 td').each(function(index) {
var classTD = $(this).attr('class');
var contentTD = $(this).text();
data = $.extend(data , { classTD : contentTD });
});
答案 0 :(得分:3)
如果你想在Javascript中将PHP数组转换为对象 - 你可以使用函数:
http://php.net/manual/en/function.json-encode.php
手册示例:
// PHP
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
$js = json_encode($arr);
echo $js;
// output
{"a":1,"b":2,"c":3,"d":4,"e":5}
因此,您可以使用PHP“回显”$js
变量来初始化您的javascript。
对于JS对象的属性的迭代,您可以使用:
http://www.w3schools.com/js/js_loop_for_in.asp
示例:强>
for (key in objectInstance)
{
alert(objectInstance[key]); // value
}
答案 1 :(得分:3)
该行:
data = $.extend(data , { classTD : contentTD });
不按预期行事。它与:
相同data = $.extend(data , { 'classTD' : contentTD });
您似乎想要评估classTD
并将其作为对象的密钥起诉。您有两种选择:
您可以指定data
成员,修改data
:
data[classTD] = contentTD;
或者您可以将$.extend
与临时对象一起使用:
var obj = { };
obj[classTD] = contentTD;
data = $.extend(data, obj);
答案 2 :(得分:1)
我认为你想要的是:
data = {};
$('#resul_rech_doc_fact tr.document-2 td').each(function(index) {
data[$(this).attr('class')] = $(this).text();
});
如果要创建全局变量,可以在window
对象上设置poperties(但我不推荐它):
$('#resul_rech_doc_fact tr.document-2 td').each(function(index) {
window[$(this).attr('class')] = $(this).text();
});
然后,如果您有一个名为'foo'的类,您可以将'foo'作为“全局变量”访问。这里的危险是你可以很容易地覆盖窗口对象的重要属性。
答案 3 :(得分:0)
好吧,您可以使用with
,但with
is considered harmful:
var obj = { bar: 'foo' };
with (obj) {
alert(bar); // 'foo'
}
alert(bar); // undefined
如果你必须有循环,你可以这样做:
var obj = { bar: 'foo' };
var key, value;
with (obj) {
for (key in obj) {
if (!obj.hasOwnProperty(key)) { // Never forget this check!
continue;
}
value = obj[key];
// Rest of loop here.
}
}
答案 4 :(得分:0)
对于所有Web用途,global scope = window,所以:
window['foobar'] = 'bar';
alert(foobar);
因此(不可推荐):
var json = {'foobar':'bar'};
for i in json {
window[i] = json[i];
}
alert(foobar);