JavaScript: getElementById不工作在IE8
JavaScript: getElementById not working in IE8
我用这个非常简单的JavaScript在span中显示选中的选项。它在除IE8以外的所有浏览器中都可以正常工作。
代码-
<select onchange="searchdisplay(this.value)">
<option>kill</option>
<option>bill</option>
<option>by</option>
<option>torentino</option>
<option>is </option>
<option>not </option>
<option>good</option>
<Select>
<span id="container">
<span>
Script -
<script>
function searchdisplay(val)
{
var div = document.getElementById('container');
div.innerHTML = val;
}
</script>
有解决方案吗?谢谢。
问题是IE8中的this.value
更改为:-
<select onchange="searchdisplay(this.options[this.selectedIndex].value)">
,它应该工作良好。
当前代码
像其他人在评论中说的那样修复你的标记。
<select onchange="searchdisplay(this.options[this.selectedIndex].value)">
<option>kill</option>
<option>bill</option>
<option>by</option>
<option>torentino</option>
<option>is</option>
<option>not</option>
<option>good</option>
</select>
<span id="container"></span>
理想的方法是为select选项添加value
属性。和this.value
,这可能是保证工作
你的脚本不工作。如果你的value属性不存在,
我猜其他浏览器没有寻找"值"属性。并在缺少选项时使用该选项的文本,但IE8确实需要它..
将value属性添加到每个选项中,就可以了
<select onchange="searchdisplay(this.value)">
<option value="kill">kill</option>
<option value="bill">bill</option>
<option value="by">by</option>
<option value="torentino">torentino</option>
<option value="is ">is </option>
<option value="not ">not </option>
<option value="good">good</option>
</select>
这个关于IE8事件处理的页面说:
微软的事件处理充满了缺点,其中一些更严重的是:
只有一个全局事件对象,而不是每个事件一个局部对象。
当使用attachEvent方法时,在事件处理中使用关键字this函数指的是窗口对象,而不是它的HTML事件实际上发生在。
不支持捕获阶段。不同的语法,需要"on"
第2项对我来说意味着onchange
中的this
将是window
,而不是单击的元素。要检查这个日志,或者在IE8中更好,警告传递到searchDisplay
以下代码:
<script type="text/javascript">
function getOption(e) {
var event = e|window.event;
alert(event.srcElement.innerHTML); // works in IE but shows the select object
alert(event.target.innerHTML); // works well in FF, shows the right option
}
</script>
<body oncontextmenu="return false;">
<select size="4" oncontextmenu="getOption(event)">
<option value="1"> option1 </option>
<option value="2"> option2 </option>
</select>
</body>
可能会对您有所帮助,这里发布的是为了解决与select非常相似的情况。
相关文章:
- IE8更改文本区域上的事件侦听器不工作
- window.onbeforeunload在IE8中不触发(在Firefox,Chrome和Safari中工作正常)
- $('body').on('blur')在IE8中工作不好
- window.location重定向没有'我不在IE8上工作
- addEventListener没有'不能在IE中工作(在IE8中测试)
- Requirejs和主干应用程序,不能在IE8中工作
- 无法在 IE 9 中传递此运算符的值,而它在 IE7 和 IE8 中工作正常
- Request.UrlReferrer在IE8中无法正常工作,并且工作正常IE9
- 不触发 OnClick 事件 IE8,但在 Firefox 中工作正常
- 如何优化我的jQuery以始终在IE8中工作,目前它被击中和错过
- 获取尾随逗号(在JavaScript中)在IE7 / IE8中工作
- FormData ajax 上传 IE8 -> 替代品及其工作原理
- jquery设置隐藏的输入值在IE7和IE8中未按预期工作
- 代码不'我不在IE8工作
- IE7中没有填充mootools中的动态下拉列表.IE8工作良好
- 梅森不在IE8工作
- Youtube iframe API调用以播放视频/pauseVideo don'我不在IE8工作
- 映射/设置与ie8工作的实现
- window.attachEvent没有'我似乎在IE8工作
- Fancybox Overlay Helper'我不在IE8工作