在for循环中匹配数组项并设置selected属性(禁用ES6语法)
嘿,这事儿好办!完全不用ES6语法,咱们用传统的for循环就能轻松实现你要的功能。先给你两种常用的实现方式,按需选就行:
方法1:直接创建DOM元素(更安全,推荐)
这种方式不会有XSS风险,适合动态数据场景:
// 你的分组数组 var groups = [ { name:"eng1", value: "12" }, { name: "eng2", value: "247" }, { name: "eng23", value: "112" } ]; // 目标ID,注意这里用字符串和数组里的value类型保持一致! var targetGroupId = "247"; // 获取页面上的select元素(替换成你实际的ID) var selectElement = document.getElementById("your-select-id"); // 遍历数组生成option for (var i = 0; i < groups.length; i++) { var currentGroup = groups[i]; // 创建option节点 var option = document.createElement("option"); // 设置option的显示文本和值 option.textContent = currentGroup.name; option.value = currentGroup.value; // 判断当前option的value是否匹配目标ID,匹配就加selected属性 if (currentGroup.value === targetGroupId) { option.selected = true; } // 把option添加到select里 selectElement.appendChild(option); }
方法2:拼接HTML字符串(简单直接,适合静态数据)
如果你的数据是静态安全的,也可以直接拼接HTML字符串:
var groups = [ { name:"eng1", value: "12" }, { name: "eng2", value: "247" }, { name: "eng23", value: "112" } ]; var targetGroupId = "247"; var optionsHtml = ""; for (var i = 0; i < groups.length; i++) { var currentGroup = groups[i]; // 动态判断是否添加selected属性 var selectedAttr = (currentGroup.value === targetGroupId) ? ' selected="selected"' : ''; // 拼接option的HTML optionsHtml += '<option value="' + currentGroup.value + '"' + selectedAttr + '>' + currentGroup.name + '</option>'; } // 把生成的option插入到select中 document.getElementById("your-select-id").innerHTML = optionsHtml;
关键注意点:
- 一定要保持类型一致:你的数组里
value是字符串类型(比如"247"),所以targetGroupId最好也定义成字符串,用===严格相等判断才不会出错;如果非要用数字,那判断时可以转成字符串,比如currentGroup.value == targetGroupId(不过还是推荐严格相等) - 所有变量都用
var声明,避免使用ES6的let/const,完全符合你的要求
内容的提问来源于stack exchange,提问作者DLzer
相关产品推荐
相关产品推荐

