Javascript:从HTML获取变量名称
问题描述:
我试图创建一个可重用的JavaScript/jQuery函数,其中只有HTML将是可编辑的。基本上,jQuery脚本将在表单select元素上查找某个类,并且它将填充选择框。它将使用一个xml文档,该文档将被输入到JavaScript变量中。Javascript:从HTML获取变量名称
<form>
<select name="topliclist" class="mhs-events" data-event-xml="/xml/events.xml" data-event-text="$fullDate, at ,$startTime, - ,$location"></select>
</form>
在这个例子, 'fullDate', '开始时间' 和 '位置' 是在JavaScript变量:
//js
var fullDate = 'Monday, October 7';
var startTime = '6:30 PM';
var location = 'Office Building 1';
(不用担心喂养从XML变量,我可以做那)
的“字符串”变量将等于数据事件文本:
//js
var string = '$fullDate, at ,$startTime, - ,$location';
$.each(string.split(","), function(index, item) {
//remove $, only put this to specify that it is a variable
if(item.indexOf('$') == 0) {
item = $(item.substring(1));
item = item.toString();
}
newString += item
});
$(this).append('<option>' + newString + '</option>');
而不是“周一,章鱼下午6点30分 - 办公楼1',它在[对象对象] - [对象对象]中填充[对象对象];
从data-event-text属性中获取变量名并实际使用它获取JavaScript中的变量值的最佳方法是什么?
答
变化
item = $(item.substring(1)); // this converts your string to object
item = item.toString();
到
item = item.substring(1);
item = eval(item).toString();
而且你不需要每一个项目加入到newString将返回所有项目作为一个选项。
尝试:
$.each(string.split(","), function(index, item) {
//remove $, only put this to specify that it is a variable
if(item.indexOf('$') == 0) {
item = item.substring(1);
item = eval(item).toString();
}
newString += item;
});
$('.mhs-events').append('<option>' + newString + '</option>');
答
你可以写一个方法如下
function readString(el1, el2, el3, x) {
var newStr = '';
var temp = x.split(' ');
for (var i = 0; i < temp.length; i++) {
var str = temp[i];
if (str.indexOf('$') == 0) {
newStr += eval(str.substring(1, str.length));
} else {
newStr += str;
}
newStr += ' ';
}
return newStr;
}
要调用
readString("I", "am" ,"saying", "$el1 $el2 $el3 hello!!!")
做一个console.log并检查你在'newString'中获得了什么 – Satpal
我在控制台中得到了同样的结果。 – nitsuj
在Chrome中尝试console.dir()...您可以展开对象以查看其属性,这将告诉您要使用哪个属性。 – adam