Javascript 将select value更改为动态添加选项会导致value="&引用;
我有一个Javascript 将select value更改为动态添加选项会导致value="&引用;,javascript,ajax,Javascript,Ajax,我有一个select,无法通过编程更改。选择仅以一个选项开始: 初始HTML: <select id="clients" name="client"> <option>Existing Clients...</option> </select> 它现在有一些选择: <select id="clients" name="client"> <option>Existing Clients...</op
select
,无法通过编程更改。选择
仅以一个选项开始
:
初始HTML:
<select id="clients" name="client">
<option>Existing Clients...</option>
</select>
它现在有一些选择:
<select id="clients" name="client">
<option>Existing Clients...</option>
<option value="6">Number1</option>
<option value="77">SecondROUND</option>
<option value="14">Whips Dat Llama</option>
</select>
我尝试将
选项
编码到选择
中,效果如预期。动态添加它们似乎是一个问题。我可以想出一个解决办法,但有人能解释一下为什么会发生这种情况吗?您不必设置
-字段的值,但您应该为要选择的选项-字段指定一个属性选定的
请参见您不必设置
-字段的值,但您应该为要选择的选项
-字段指定一个属性
请参见您正在使用异步的AJAX加载选项。在分配给.value
之前,必须等待响应,否则具有该值的选项将不存在。因此,它需要在getClients
回调函数中完成
function getClients() {
$.get('ajax/get-clients.php')
.done(function(response) {
for (let client of JSON.parse(response)) {
addClientOption(client.id, client.company_name);
}
document.getElementById('clients').value = 6;
})
.fail(function(response) {
console.log(response);
});
}
您正在使用异步的AJAX加载选项。在分配给.value
之前,必须等待响应,否则具有该值的选项将不存在。因此,它需要在getClients
回调函数中完成
function getClients() {
$.get('ajax/get-clients.php')
.done(function(response) {
for (let client of JSON.parse(response)) {
addClientOption(client.id, client.company_name);
}
document.getElementById('clients').value = 6;
})
.fail(function(response) {
console.log(response);
});
}
分配给
的.value
应该完成同样的事情。文档.getElementById('clients')。选项[1]。selected=true;//=>未捕获类型错误:无法将未定义的属性“selected”设置为分配给。
的值应完成相同的任务。文档。getElementById(“客户端”)。选项[1]。selected=true;//=>未捕获的TypeError:无法设置未定义的属性“selected”
它对我有效:您确定在收到AJAX响应后分配给.value
?密码里的作业在哪里?嗨,巴玛,谢谢你的提琴。分配就在调用getClients()之后。它看起来像:$(function(){getClients();document.getElementById('clients')。value=6;})
它对我有效:您确定在收到AJAX响应后分配给.value
?密码里的作业在哪里?嗨,巴玛,谢谢你的提琴。分配就在调用getClients()之后。它看起来像:$(function(){getClients();document.getElementById('clients')。value=6;})代码>那么它在AJAX完成之前继续执行下一条指令(赋值)?哦,当然因为AJAX就是这样工作的。哈非常感谢您的帮助。那么在AJAX完成之前,它将继续执行下一条指令(赋值)?哦,当然因为AJAX就是这样工作的。哈非常感谢你的帮助。
function getClients() {
$.get('ajax/get-clients.php')
.done(function(response) {
for (let client of JSON.parse(response)) {
addClientOption(client.id, client.company_name);
}
document.getElementById('clients').value = 6;
})
.fail(function(response) {
console.log(response);
});
}