我有一个JSON文件,其中包含一些信息,例如DOM元素的id(文本字段或下拉框)以及如何获取值的方式,如val(),text()。
{
"textfield":"text()",
"textfield":"val()"
}
我使用ajax函数来获取json数据......这部分没问题。
我正在做的事情是将json对象用作属性
$.each(jsonData, function(key, getValue){
console.log($('#myTextfieldID').getValue);
});
或
$.each(jsonData, function(key, val){
console.log($('#myTextfieldID')[getValue]);
});
但返回的值总是"未定义"
对于舒尔我可以这样做。
switch (getValue)
{
case 'text()':
console.log($('#myTextfieldID').text());
break;
case 'val()':
console.log($('#myTextfieldID').val());
break;
}
有人有想法吗?请求帮助
答案 0 :(得分:0)
因为函数通过变量引用到javascript对象中,所以你可以这样:
{
"textfield":"text",
"textfield":"val"
}
并且:
$.each(jsonData, function(key, val){
console.log($('#myTextfieldID')[getValue]());
});
答案 1 :(得分:0)
首先 - 如果返回了jQuery对象 - 它没有属性" text()",这就是为什么你得到" undefined"。
JavaScript中的Methonds只是函数类型的对象属性。
因此,在您的情况下,您应该存储属性的名称
jsonData = {
"textfield":"text",
"textfield":"val",
"textfield":"fooBar"
};
然后调用该属性,如果它是'功能'或者以其他方式返回其值
$.each(jsonData, function(key, getValue){
var d = $('#myTextfieldID')[getValue];
console.log(d instanceof Function ? d() : d);
});
答案 2 :(得分:0)
得到它,关于变量的attr是什么?喜欢......
{
"textfield":"text",
"textfield":"val",
"textfield":"attr, myAttr",
}
和......
$.each(jsonData, function(key, val){
var parts = val.split(",");
console.log($('#myTextfieldID')[parts[0]](parts[1]));
});
...但这只适用于特殊情况" myAttr",对于我得到的其他人" jQuery.fn.jQuery.init [1]"。 我不能在这个函数中添加一些空变量吗?
这种方式正在发挥......$.each(jsonData, function(key, val){
var parts = val.split(",");
if (parts.length > 1)
console.log($('#myTextfieldID')[parts[0]](parts[1]));
else
console.log($('#myTextfieldID')[parts[0]]());
});
一些html示例
<input type="text" name="appName" value="myApp1" id="appNameID1" />
<input type="text" name="appName" value="myApp2" id="appNameID2" />
<input type="text" name="appName" value="myApp3" id="appNameID3" myAttr="someVal"/>