javascript - 填充下拉点击它
问题描述
我有一个像这样的空下拉列表:
<select class="flex-40 sale-select-input">
<option value="1">-----</option>
select>
我想通过 ajax 请求填充它,我使用了 onclick 事件:
let selectInput = document.querySelector('.sale-select-input');
selectInput.addEventListener('click', ()=>{
ajax.load('size/get-sizes', this.data(), (result) => {
this.result = result;
this.fillSizes()
}).send();
}
ajax 结果将是这样的:
[
id:1, name:'L',
id:2, name:'XL'
]
并在 fillSize :
fillSizes() {
let selectINput = document.querySelector('.sale-select-input');
this.result.forEach(size => {
let option = `<option value="${size.id}">${size.name}</option>`;
selectINput.insertAdjacentHTML('beforeend', option);
});
}
但是当我单击其中一个下拉选项时,也会触发 onclick 事件。我想我为“ONLY OPENING THE DROPDOWN”选择了错误的事件,谢谢
解决方案
您应该在pageload
和上填充下拉菜单not on click of dropdown
。更新代码如下。
window.addEventListener('load', function() {
let selectInput = document.querySelector('.sale-select-input');
ajax.load('size/get-sizes', this.data(), (result) => {
this.result = result;
this.fillSizes()
}).send();
});
推荐阅读
- java - 以最有效和可读的方式进行条件初始化
- java - 如何在 Maven Surefire 单元测试中读取控制台输出
- spring - 如何在 Spring Integration 中使用来自 int-http:inbound-gateway 的数据设置 SOAP Envelope Header?
- c++ - 着色器纹理值与创建纹理时写入的不同
- python - 带有 cron 的 Python 脚本
- safari - 在审查您的扩展程序期间,我们发现 Info.plist 在提交到 Safari 扩展程序库时缺少“网站”字段
- mysql - MySql - 如何组合两个表的 where 子句以进行一对多连接?
- node.js - 无法通过节点应用程序访问 docker 容器内的 url,但 curl 到相同的 url 有效
- c# - 如何在对标题应用排序后刷新 WPF Treeview 内容?
- puppeteer - 从 puppeteer 脚本中的 csv 读取数据并将数据传递到某些网站以自动填写表格,还可以通过 puppeteer 在其他网站上上传图像