javascript - 如何将数组和递增变量包含到 getElementById 语句中?

标签 javascript arrays getelementbyid multi-select setattribute

我试图禁用动态创建的下拉菜单选项(取决于用户与其他菜单选项的交互)并且我遇到了一个错误,指出“null”不是一个对象。

在这行代码中:

if (document.getElementById(DropDownNames[j]+x).value = openerVals) {

我相信我有一个语法错误,但我对 Javascript 还是很陌生,我不能完全确定。

完整代码如下:

var OpeningEmployees = document.getElementById('opener');
var QuantityDDOptions = ('#opener option').length;

var openerVals = eodForm.elements["opener"].value;

var DropDownNames = new Array();
DropDownNames[0] = "ui-multiselect-opener-option-";
DropDownNames[1] = "ui-multiselect-mid-option-";
DropDownNames[2] = "ui-multiselect-closer-option-";
DropDownNames[3] = "ui-multiselect-SR-option-";
DropDownNames[4] = "ui-multiselect-CR-option-";
DropDownNames[5] = "ui-multiselect-A-option-";
DropDownNames[6] = "ui-multiselect-BD-option-";
DropDownNames[7] = "ui-multiselect-Fridge-option-";
DropDownNames[8] = "ui-multiselect-AO-option-";
DropDownNames[9] = "ui-multiselect-EPV-option-";



OpeningEmployees.onchange = function () {
    for (var j = 0; j <= DropDownNames.length; j++){
        for (var x = 0; x <= QuantityDDOptions; x++) {
        if (document.getElementById(DropDownNames[j]+x).value = openerVals) {
            document.getElementById("'"+DropDownNames[j]+x+"'").setAttribute("disabled","disabled");

谢谢大家的帮助。我已经根据您的帖子进行了更改,但浏览器控制台中仍然出现错误。请注意,下拉名称末尾的数字是动态的。当用户被添加到数据库中时,他们被添加到下拉菜单中,这就是为什么我将 QuantityDDOptions 设置为等于选项数量的原因。选项从 0 开始。

这是更新后的代码:

var OpeningEmployees = document.getElementById('opener');
var QuantityDDOptions = ('#opener option').length;

var openerVals = eodForm.elements["opener"].value;

var DropDownNames = new Array();
DropDownNames[0] = "ui-multiselect-opener-option-";
DropDownNames[1] = "ui-multiselect-mid-option-";
DropDownNames[2] = "ui-multiselect-closer-option-";
DropDownNames[3] = "ui-multiselect-SR-option-";
DropDownNames[4] = "ui-multiselect-CR-option-";
DropDownNames[5] = "ui-multiselect-A-option-";
DropDownNames[6] = "ui-multiselect-BD-option-";
DropDownNames[7] = "ui-multiselect-Fridge-option-";
DropDownNames[8] = "ui-multiselect-AO-option-";
DropDownNames[9] = "ui-multiselect-EPV-option-";



OpeningEmployees.onchange = function () {
    for (var j = 0; j < DropDownNames.length; j++){
        for (var x = 0; x < QuantityDDOptions; x++) {
            if (document.getElementById(DropDownNames[j]+x).value == openerVals) {
                document.getElementById(DropDownNames[j]+x).setAttribute("disabled","disabled");

最佳答案

document.getElementById(DropDownNames[j]+x).value = openerVals

需要

document.getElementById(DropDownNames[j]+x).value == openerVals

单个 = 会将某物设置为等于另一物(并返回设置值)。由于您使用了它,这意味着 if 语句使用的结果是设置值的真实性。

== 用于评估两个事物是否彼此相等,具有类型强制。 (2 == "2"为真)

=== 用于评估两个事物是否彼此相等,没有类型强制。 (2 !== "2"为真)

关于javascript - 如何将数组和递增变量包含到 getElementById 语句中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15552126/

相关文章:

javascript - 如何在 javascript 中覆盖 Firefox 按键绑定(bind)?

c++ - 井字棋数组错误

c++ - 尝试将数组大小调整为 -1

javascript - IE6 无法使用 getElementById() 找到 Object 元素?

javascript - 当用户输入字段的名称/ID 时获取文本框的值

javascript - 如何从查找中选择值

arrays - 在数组中运行 Ruby 代码?

javascript - 无法在全局范围内使用 document.getElementById()

javascript - 在 javascript 中获取 asp 服务器元素时出错

javascript - 模板文字函数内的 If 语句