这里有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。显然不是。
我哪里错了?
答案 0 :(得分:1)
您必须使用theForm[theField]
语法,因为“theField”是包含属性名称的变量,而不是属性本身。此外,您需要将state
作为字符串传递。