Javascript将String转换为Object属性

时间:2015-12-22 06:21:46

标签: javascript

我想构建自己的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

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:2)

您应使用eval()将属性名称转换为属性。使用Property accessors

,例如,el[dom]el.dom

如果ObjectHTML元素,您可以使用可用的setAttributegetAttribute方法。

当你将一个字符串作为参数传递给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")可行。