如何获取JavaScript创建的下拉列表选中选项的标题(YES/NO)
解决方案:获取下拉列表选中选项的标题
先梳理你代码里的两个核心问题:
- 你的
createSelect2函数只创建了<select>元素,但没有把array里的选项(YES!/NO)添加到下拉列表中,空的下拉列表自然无法获取选中内容; - 你获取选中项时,错误地定位了
id="tag"的元素,但实际你的下拉列表id是"select-" + rowNumber,找错了目标元素。
第一步:补全下拉列表创建代码,添加选项
先把createSelect2函数完善,把数组里的选项真正渲染到下拉列表中:
function createSelect2(tag) { var select = document.createElement("select"); select.id = "select-" + rowNumber; var array = [ { title: "YES!", value: "return 0;" }, { title: "NO", value: "return 1231 * area;" } ]; // 遍历数组,生成<option>并添加到select中 array.forEach(item => { var option = document.createElement("option"); option.textContent = item.title; // 设置选项显示的标题文本 option.value = item.value; // 设置选项的value属性 select.appendChild(option); }); tag.appendChild(select); }
第二步:正确获取选中选项的标题
现在下拉列表有可选择的选项了,在另一个函数里通过正确的id定位下拉列表,再获取选中项的文本:
// 注意替换成实际的rowNumber值,比如rowNumber为1时,id是"select-1" var selectElement = document.getElementById("select-" + rowNumber); if (selectElement) { // 获取选中选项的标题文本 var yesno = selectElement.options[selectElement.selectedIndex].text; // 也可以用更标准的textContent属性,效果一致 // var yesno = selectElement.options[selectElement.selectedIndex].textContent; console.log(yesno); // 会输出选中的YES!或NO }
额外优化:如果rowNumber是动态值
如果rowNumber是动态递增的(比如每次创建下拉列表都会变化),你可以给所有这类下拉列表加统一类名,避免依赖id拼接:
// 创建select时添加类名 select.className = "yes-no-select"; // 获取时通过类名定位(单个下拉列表用querySelector,多个用querySelectorAll) var selectElement = document.querySelector(".yes-no-select");
这样就不用纠结rowNumber的具体值了,定位更灵活。
内容的提问来源于stack exchange,提问作者NoobProgrammer
相关产品推荐
相关产品推荐

