javascript noob。变量和元素

时间:2012-06-20 19:03:11

标签: javascript function syntax

这里有javascript的总菜鸟。我正在尝试改变一个功能。这是目前存在并有效的。

function hideStateField(theForm) {
    theForm.state.disabled = true;
    theForm.state.className = 'hiddenField';
    theForm.state.setAttribute('className', 'hiddenField');
    document.getElementById("stateLabel").className = 'hiddenField';
    document.getElementById("stateLabel").setAttribute('className', 'hiddenField');
    document.getElementById("stateText").className = 'hiddenField';
    document.getElementById("stateText").setAttribute('className', 'hiddenField');
    document.getElementById("stateBreak").className = 'hiddenField';
    document.getElementById("stateBreak").setAttribute('className', 'hiddenField');
}

我想让它更通用,所以它不是特定于“州”字段。所以我正在更改函数名称以反映它并添加第二个参数。然后我试图将第二个参数用作变量来代替我们看到“状态”的位置。

function hideAddressField(theForm,theField) {
    theForm.theField.disabled = true;
    theForm.theField.className = 'hiddenField';
    theForm.theField.setAttribute('className', 'hiddenField');
    document.getElementById(theField+"Label").className = 'hiddenField';
    document.getElementById(theField+"Label").setAttribute('className', 'hiddenField');
    document.getElementById(theField+"Text").className = 'hiddenField';
    document.getElementById(theField+"Text").setAttribute('className', 'hiddenField');
    document.getElementById(theField+"Break").className = 'hiddenField';
    document.getElementById(theField+"Break").setAttribute('className', 'hiddenField');
}

我用“状态”作为第二个变量进行了测试,以确保它有效......但事实并非如此。我一直得到“未定义的TypeError:无法设置属性'禁用'未定义”。我确定它是一个语法错误。我对这个函数的调用是:

hideAddressField(theForm,state);

表单的名称也是“theForm”,因此我认为变量“theForm”被赋值为“theForm”,而变量“theField”被赋值为“state”,两个函数应该是equivelant。显然不是。

我哪里错了?

1 个答案:

答案 0 :(得分:1)

您必须使用theForm[theField]语法,因为“theField”是包含属性名称的变量,而不是属性本身。此外,您需要将state作为字符串传递。