javascript - 添加选项以使用 javascript 或 jquery 选择元素不起作用
问题描述
我有一个选择下拉框,其中输入了一个选项。我想使用 javascript 或 jquery 向列表中添加其他选项。我尝试了多种方法,但没有任何效果。这是html:
<form class="form-all">
<label for="selectStrategy" class="form-all" onChange="selectStrategy(this.value);">Select Strategy:</label><br>
<select id="selectStrategy" width="400px" name="selectStrategy" margin-left="80px">
<option value="new">New Strategy</option>
</select><br><br>
...
这是javascript:尝试#1
function loadStrategies(callback) {
$.getJSON("http://localhost:8080/api/v1/strategies", function(data) {
data.forEach(function (item) {
console.log(item.name);
var select = document.getElementById("selectStrategy");
var option = document.createElement('option');
option.value = item.name;
option.text= item.name;
select.append(option);
这是尝试#2
function loadStrategies(callback) {
$.getJSON("http://localhost:8080/api/v1/strategies", function(data) {
data.forEach(function (item) {
console.log(item.name);
var select = document.getElementById("selectStrategy");
select.options[select.options.length] = new Option(item.name,item.name);
这是尝试#3
function loadStrategies(callback) {
$.getJSON("http://localhost:8080/api/v1/strategies", function(data) {
data.forEach(function (item) {
console.log(item.name);
var select = document.getElementById("selectStrategy");
var option = document.createElement('option');
option.value = item.name;
option.innerHTML = item.name;
select.appendChild(option);
我也尝试过 option.text 而不是 option.innerHTML
这是尝试#4
function loadStrategies(callback) {
$.getJSON("http://localhost:8080/api/v1/strategies", function(data) {
console.log("strategies getJSON data=", data);
data.forEach(function (item) {
console.log(item.name);
var option = "<option value=" +item.name +">" +item.name +"</option>";
$('#selectStrategy').append(option);
在所有情况下,选择列表中都没有添加任何内容,控制台中也没有错误。console.log(item.name) 正确显示了我想在选项中输入的名称。建议?
编辑 尝试 #5
function loadStrategies() {
$.getJSON('http://localhost:8080/api/v1/strategies')
.then(data => {
const $sel = $('#selectStrategy')
data.forEach(({name})=> $sel.append(new Option(name, name)));
})
}
尝试#6
function loadStrategies(callback) {
$.getJSON("http://localhost:8080/api/v1/strategies", function(data) {
data.forEach(function (item) {
console.log(item.name);
let option = new Option();
option.innerHTML = item.name;
option.value = item.name;
$('#selectStrategy').appendChild(option);
let row = $('<tr class="clickable">');
row.append($('<td class="left">').html(item.name));
row.append($('<td>').html(item.version));
row.append($('<td> class="right"').html(item.total_return));
$('#strategy').append(row);
});
});
}
在上面的示例中,我在同一个循环中包含更多内容,但将行添加到表中。它工作得很好,那么为什么将项目添加到列表中的部分不起作用?:
$(document).ready(function () {
loadWatchlist();
loadStrategies();
解决方案
这应该有效。至少它对我有用:D
let select = document.getElementById('selectStrategy');
let option = new Option();
option.innerHTML = 'Another new strategy';
option.value = 'new-strategy';
select.appendChild(option);
推荐阅读
- html - 如何在Angular中的新视图/组件上传递和显示计算结果?
- scala - 由于 java.lang.NoSuchMethodError,sbt 无法编译 Scala 项目
- nuxt.js - 如果路由不以 index 开头,则防止 nuxt 从 index 开始
- swift - 我可以查询并查看 Firestore 的两个不同字段中是否存在一个值吗?
- python - pandas_datareader 的非弃用版本是什么?
- regex - 正则表达式从文件中提取单词
- keras - 使用 Tensorflow 后端在 Keras 中实现双编码器 LSTM
- node.js - 如何使用连接在我的节点服务器上启用 gzip?
- python - 如何从文件中读取浮点数并在 Python 中显示平均值
- laravel - 动态搜索功能相册