我制作了一个脚本,从下拉菜单中选择一个选项。
scrips正在运行,但是下拉菜单也有一个onchange
监听器,当用JS选择下拉选项时,这个监听器不会触发?
示例:
如果我从下拉列表中手动选择T405,onchange
脚本将会触发。
如果我从我的脚本中选择T405,下拉列表会显示所选的选项,但onchange
脚本不会触发?
我的简单html代码(以后它会成为img
):
<ul>
<li onclick="selectItemByValue('bundle-option-132', 700)">Test</li>
</ul>
我的JS(正在工作并从下拉列表中选择一个选项):
<script>
function selectItemByValue(dropValg, value) {
var denne = document.getElementById(dropValg);
denne.value = value;
}
</script>
有没有办法更新/刷新&#34;下拉列表,以便在我的脚本选择选项时触发onchange
脚本?
我甚至尝试从我自己的脚本中解雇onchange
脚本?
<script>
function selectItemByValue(dropValg, value) {
var denne = document.getElementById(dropValg);
denne.value = value;
bundle.changeSelection(denne);
}
</script>
-----------------编辑----------------
现在,将denne.onchange()
添加到我的脚本并将其作为&#34;代码段&#34;运行时,它现在可以正常工作,但它不适用于我的&#34;直播网站&#34;?
似乎有一个事件监听器覆盖了内联onchange
电话?一个名为prototype.js的脚本?如果我删除onchange
元素的<select>
部分,则此脚本只会运行它/添加它。
我在我的Magento商店中使用了一个名为OptionBundle的脚本,当使用JS更改下拉选项时,这个脚本没有被触发? 如果我删除prototype.js我的脚本工作得很好,但它粗略地破坏了OptionBundle脚本的功能。
我要尝试写剧本的作者。
工作示例(添加了denne.onchange()
):
function selectItemByValue(dropValg, value) {
var denne = document.getElementById(dropValg);
denne.value = value;
denne.onchange();
console.log(denne.value);
console.log(denne);
}
&#13;
<ul>
<li onclick="selectItemByValue('bundle-option-132', 700)"> Click to change</li>
</ul>
<select onchange="alert('Content changed')" id="bundle-option-132" name="bundle_option[132]" class="bundle-option-132 bundle-option-select change-container-classname" wtx-context="276DE744-A364-4DD3-AEFC-0D9F9A9AAE19">
<option value="">Udvælg...</option>
<option value="875">Bianco</option>
<option value="695">T400</option>
<option value="697">T402</option>
<option value="698">T403</option>
<option value="699">T404</option>
<option value="700">T405</option>
<option value="702">T407</option>
<option value="703">T408</option>
<option value="704">T409</option>
<option value="705">T410</option>
</select>
&#13;
答案 0 :(得分:0)
只需触发onchange
function selectItemByValue(dropValg, value) {
var denne = document.getElementById(dropValg);
denne.value = value;
denne.onchange();
}
window.onload = function() {
document.getElementById("sel").onchange = function() {
console.log(this.value);
}
document.getElementById("but").onclick = function() {
selectItemByValue("sel", 1);
}
}
&#13;
<select id="sel">
<option value="">Please select</option>
<option value="1">One</option>
<option value="2">Two</option>
</select> <button id="but" value="1">
Click to change to "1"</button>
&#13;