我在表单中有几个输入字段,每个字段都有一个唯一的名称。例如,要改变我要做的颜色:
testForm.username.style.background = "yellow";
username
是输入的名称,testform
是表单名称
我想这样做:用变量username
替换elem
,这样当我调用函数来改变背景颜色时,我不需要为每个唯一字段都有一个单独的函数。我只发送elem
名称,该功能适用于每个字段。
testForm.elem.style.background = "yellow";
我的问题是它不起作用。例如,它将elem
传递给函数正常,但它表示testForm.elem.style
为null
。出于某种原因,javascript不喜欢我猜的元素名称变量?
答案 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.property
或object["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”);