【发布时间】:2017-05-19 05:51:20
【问题描述】:
我正在使用 javascript 在焦点上自动填充选择框,然后在模糊时清除 innerHTML(所选值除外)(以防止列表越来越大)。
除非选择的值是两个单词,否则一切都按预期工作......例如:“Bath Bombs”。如果我再次单击选择框,并选择相同的选项(现在位于列表顶部),它会从字段中删除“炸弹”一词???
(另外,根据我的代码,有什么办法可以防止字段缩小吗?)
谁能告诉我哪里出错了? (顺便说一句:我对 javascript 或 html 知之甚少——过去几天我一直在自学)
<script>
function prodType(id){
var targetId = id;
var select = document.getElementById(targetId);
var options = [ "", "Candles", "Tarts", "Bath Salts", "Bath Bombs", "Glycerin Soaps", "Salt Scrubs", "Sugar Scrubs", "Shower Gel", "Lotions"];
for(var i = 0; i < options.length; i++) {
var opt = options[i];
var el = document.createElement("option");
el.textContent = opt;
el.value = opt;
select.appendChild(el);
}
}
function clearAll(id) {
var targetId = id;
var select = document.getElementById(targetId);
var svalue = select.value;
select.innerHTML = "<option value="+svalue+">"+svalue+"</option>";
}
</script>
<select style="width:150" id="selectNumber" onfocus="prodType(this.id)" onblur="clearAll(this.id)">
<option value="" hidden>Product Type</option>
</select>
如果您运行此代码...选择“两个单词”选项,单击关闭选择框,然后再次选择相同的选项,这次从列表的 ~~THE TOP~~ 中选择。
当你点击关闭时,你会看到发生了什么。
谢谢!
【问题讨论】:
-
引号很重要.... :)
-
我不明白您要做什么。使用常规 html 选择构建和清除选择实现了什么?
-
巫术... lunochkin,同时解决了两个问题!
-
steve - 使用输入框,您可以将所有选项放在一个位置,并在多个元素上使用它们。 -但是-由于自动完成,可以选择、写入或显示其他选项。 (在这种情况下我无法关闭自动完成功能是有原因的)。使用 select,只有我的选项可用,但每次我创建一个新元素时,我都必须包含所有选项。这样我可以调用相同的函数并使用相同的数据,而无需编写 100 行代码
标签: javascript html