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);
    });
  }