当选择框选项获得焦点时,我试图让某些事情发生(写入 div
)。从 jsfiddle 代码中,您可以看到我已经让它在事后工作了——也就是说,一旦选择了选项并且鼠标移回到现在关闭的选择框。当盒子打开时如何让它工作?
(如果重要的话,我有另一个函数绑定(bind)到在“更改”事件上触发的同一元素(选择框)。我想知道这是否是问题所在?)。
HTML:
<div id="Hint"></div>
<div id='select-container'>
<select name="parent_selection" id="parent_selection">
<option selected="selected">-- Select 1st option --</option>
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3">Option 3</option>
</select>
<select name="child_selection" id="child_selection">
<option value="">-- Select 2nd option --</option>
</select>
</div>
JavaScript:
//Display hint for hovered selection in 1st dropdown
var elSelect_container, elHint; // Declare variables
elAppSelected = document.getElementById('parent_selection');
elHint = document.getElementById('Hint');
function Hint() {
var elAppSelected = this.options[this.selectedIndex].value;
if (elAppSelected === 'option1') {
elHint.innerHTML = 'Good choice';
}
if (elAppSelected === 'option2') {
elHint.innerHTML = 'Better choice';
}
if (elAppSelected === 'option3') {
elHint.innerHTML = 'Best Choice!';
}
}
//Create event listener: mouseover calls Hint()
elAppSelected.addEventListener('mouseover', Hint, false);
最佳答案
我认为您的问题出在未显示的 onchange 事件中。我将 addEventListener 更改为更改 vs mouseover,并且该示例工作正常。我不确定您需要另一个 onchange 事件做什么,但也许您可以将它们组合起来。
JavaScript:
//Display hint for hovered selection in 1st dropdown
var elSelect_container, elHint; // Declare variables
elAppSelected = document.getElementById('parent_selection');
elHint = document.getElementById('Hint');
function Hint() {
var elAppSelected = this.options[this.selectedIndex].value;
if (elAppSelected === 'option1') {
elHint.innerHTML = 'Good choice';
}
if (elAppSelected === 'option2') {
elHint.innerHTML = 'Better choice';
}
if (elAppSelected === 'option3') {
elHint.innerHTML = 'Best Choice!';
}
}
//Create event listener: mouseover calls Hint()
elAppSelected.addEventListener('change', Hint, false);
//elAppSelected.addEventListener('mouseover', Hint, false);
关于当选择框选项具有焦点时,Javascript 事件不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25453202/