我想构建自己的PROP
函数,就像Jquery
那样,但是纯Java script
。
这是我的代码:
<input id="submitButton" type="submit" value="LOGIN">
function prop(el, dom, boolean) {
var convert = eval(dom);
el.convert = boolean;
console.log(convert);
}
var x = document.getElementById("submitButton");
prop(x, "disabled", true);
如何将字符串转换为对象属性?我听说eval
会有用吗?但为什么我得到以下错误?
ReferenceError: disabled is not defined
我的代码出了什么问题?
答案 0 :(得分:2)
您应不使用eval()
将属性名称转换为属性。使用Property accessors
。
,例如,el[dom]
或el.dom
。
如果Object
是HTML
元素,您可以使用可用的setAttribute
和getAttribute
方法。
当你将一个字符串作为参数传递给eval时,它会尝试将该字符串表示为java脚本代码。
在这里,您传入了一个字符串disabled
。
它表示为:
disabled;
解释器现在尝试查找名为disabled
的变量。由于disabled
不是我们在上下文中定义的变量,因此会抛出错误:ReferenceError: disabled is not defined
。
要验证这一点,请尝试定义变量,然后在其上调用eval()
函数。
var disabled = 10;
console.log(eval("disabled"));
打印:#10
答案 1 :(得分:0)
这是因为你正试图评估“残疾人”本身的含义。
eval("document.getElementById('submitButton').disabled")
可行。