是否可以将变量用作dom元素?

时间:2009-08-18 16:56:23

标签: javascript

我在表单中有几个输入字段,每个字段都有一个唯一的名称。例如,要改变我要做的颜色:

testForm.username.style.background = "yellow";

username是输入的名称,testform是表单名称

我想这样做:用变量username替换elem,这样当我调用函数来改变背景颜色时,我不需要为每个唯一字段都有一个单独的函数。我只发送elem名称,该功能适用​​于每个字段。

testForm.elem.style.background = "yellow";

我的问题是它不起作用。例如,它将elem传递给函数正常,但它表示testForm.elem.stylenull。出于某种原因,javascript不喜欢我猜的元素名称变量?

5 个答案:

答案 0 :(得分:5)

var elem = 'username';
testForm[elem].style.background = 'yellow';

答案 1 :(得分:1)

testForm [elem].style.background = "yellow";

var elem = testForm.username
elem.style.background = "yellow";

在第一种情况下elem保存用户名,在第二种情况下,elem指向实际的DOM元素。

答案 2 :(得分:1)

可以使用object.propertyobject["property"]语法访问JavaScript对象的属性(在本例中,对象“testform”的“username”属性)。由于第二种形式采用字符串(如双引号所示),因此包含字符串的变量也可以与该语法一起使用。因此:

testform[elem].style.background = "yellow";

会做你想做的事。

答案 3 :(得分:1)

听起来你正在创建一个功能来执行此操作。在这种情况下,为什么不使用以下功能:

function changeBackgroundOfElementToYellow(element){
  element.style.background = "yellow";
}

并将其命名为:

changeBackgroundofElementToYellow(testForm.username);

总的来说,我发现RaYell / kangax方法已经发布得更好了,但这是另一种选择。

答案 4 :(得分:-3)

你必须做一个eval来做类似的事情,例如eval(“testform。”+ elem +“。style.background = yellow”);