[英]How to retrieve the value of the selected option from a dynamically created select in a table
[英]How to set the value of an Option element in a dynamically created Select in a table as it is created
我正在表中动态创建一个下拉列表,并希望将下拉列表的值设置为当前值(然后用户可以将其更改为其他值之一)。 该行看起来像这样(有多行):
在这种情况下,PAR 的值最初应为 2(每行可以有不同的初始值)。
代码是:
html += "<td style='width : 1%; white-space: nowrap;'><select name='parRating'>"
for (let i = 0; i <= paraArray; i++) {
html += "<option name='parRatingOption' value='" + parRatingArray[i] + "'>" + parRatingArray[i] + "</option>"
};
html += "</select></td>";
// set the current option to this.parRating
看来,您需要将“selected”属性添加到<option>
,您需要
像这样的东西:
html += "<td style='width : 1%; white-space: nowrap;'><select
name='parRating'>";
let selectedValue = "2"; // <--
let selected = "";
for (let i = 0; i <= paraArray; i++) {
selected = parRatingArray[i] == selectedValue ? " selected " : "";
html += "<option "+selected+" name='parRatingOption' value='" + parRatingArray[i] +
"'>" + parRatingArray[i] + "</option>"
};
html += "</select></td>";
// 将当前选项设置为 this.parRating
您可以使用模板文字:
html += `<option name='parRatingOption' value='${parRatingArray[i]}'>${parRatingArray[i]}</option>`
这也有助于避免笨拙的弦线接头。 最佳实践是创建一个函数,该函数生成 n 个选项,其中选择了一个:
const generateOptions = (n, selectedOne) => {
let options = ''
for(let i=0; i<n; i++){
options+=`<option name='parRatingOption' ${i===selectedOne ? 'selected' : ''} value='${parRatingArray[i]}'>${parRatingArray[i]}</option>`
}
return options;
}
html+=`<td style='width : 1%; white-space: nowrap;'>
<select name='parRating'>
${generateOptions(5, 2)}
</select>
</td>`
这会动态生成 5 个输入,并选择第二个
我修改了 Abdullokh 和 Alex 的答案,并在选项元素中添加了“selected”:
html += "<td style='width : 1%; white-space: nowrap;'><select name='parRating'>"
for (let i = 0; i <= paraArray; i++) {
if (this.parRating == parRatingArray[i]) {
// set the current option to this.parRating
html += "<option selected name='parRatingOption' value='" + parIdArray[i] + "'>" + parRatingArray[i] + "</option>"
}else {
html += "<option name='parRatingOption' value='" + parIdArray[i] + "'>" + parRatingArray[i] + "</option>"
}
};
html += "</select></td>";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.