internetexplorer8-为什么这个JavaScript适用于FF而不是IE8
internet explorer 8 - Why does this JavaScript work for FF and not IE8
半年后,我刚刚发现IE无法处理这个脚本,现在我的程序员走了,我自己也陷入了困境:-(
它在FF 中运行良好
这是代码:
function updateFields(name, value) {
var elements = getElementsByClass('field_' + name);
for(var i=0; i<elements.length; i++) {
var e = elements[i];
while(e.firstChild != null) { e.removeChild(e.firstChild); }
e.appendChild(document.createTextNode(value + ' '));*
} // for i
} // updateFields()
我的IE调试器抱怨用*标记的行。它说:错误:对方法或属性访问的意外调用。
有人能花一些宝贵的时间帮忙吗?请像我四岁的孩子一样写答案。
function getElementsByClass(cls) {
var fields = document.getElementsByTagName('*');
var r = new Array();
for(var i=0; i<fields.length; i++) {
var f = fields[i];
var a = f.getAttribute('class');
if(a == null)
a = f.className;
if(a == null)
continue;
var classes = a.split(' ');
for(var j=0; j<classes.length; j++) {
if(classes[j] == cls) {
r.push(f);
break;
} // if
} // for j
} // for i
return r;
}
按钮:
<form>
<p class="center">
<input type="button" onclick="javascript:book_wire_transfer();" style="border: none; border:0;"'>
<p class="center">
<img src="http://www.-.com/images/text/arrow_left_small.png" alt="»" class="middle" />
<span class="submit">
<input class="submit" type="submit" value="Book now" />
</span>
<img src="http://www.-.com/images/text/arrow_right_small.png" alt="«" class="middle" />
</p>
</p>
</form>
有些元素是IE8及以下版本无法添加textNodes的,尽管IE9和其他浏览器可以添加。
option element(use optionelement.text)
input element(use inputelement.value)
style element(use styleelement.styleSheet.cssText)
script element(use scriptelement.text)
getElementsByClass
不是内置函数,因此它可能来自您正在使用的与IE8不兼容的其他库。在这种情况下,它可能返回的内容不是一组有效的DOM节点。
如果您可以发布该方法的作用,这将有助于我们进行调试。否则,您可以尝试使用document.querySelectorAll('.field_' + name)
,看看是否可以修复它;这在IE8以后的版本中是受支持的,至少在标准模式下是这样。
编辑:您的自定义getElementsByClass
函数看起来还可以,尽管如果没有单元测试,我很难100%确定。一种测试方法是尝试用return document.querySelectorAll('.field_' + name)
替换getElementsByClass
的主体,看看是否修复了它…这样,getElementsByClass
函数仍然存在,所以所有其他代码都没有损坏,但可能更正确。
好吧,删除末尾的*
e.appendChild(document.createTextNode(value + ' '));*
相关文章:
- Recaptcha在IE7和IE8中不起作用
- WebRTC视频聊天可以在FF中使用,但不能在Chrome中使用
- FF视图源|脚本高亮显示为红色
- FF和Chromium中CSS样式按钮的外观差异
- Joomla Gantry Framework ie8 LESS/CSS
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- 在IE8中不起作用的元素上触发单击事件
- 谷歌地图v3标记没有显示ie8和9
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- 数据-在IE8中不起作用
- 在FF和IE中使用vimeo播放器的问题-加载flash播放器而不是使用HTML5播放器
- 在KoGrid中使用knockoutjs不适用于Chrome或FF,但适用于IE8
- 自定义Angular.js过滤器在IE8中不返回任何内容,在Chrome/FF中运行良好
- Chrome/FF 与 IE8 中的搜索框对齐方式
- Javascript没有'不适用于IE8,但适用于IE9和FF
- IE8 .click()在请求完成之前被终止,适用于chrome和FF
- Javascript工作在FF + IE9,但不是IE8
- Jquery attr('src')在ie8中未定义(在FF中工作)
- internetexplorer8-为什么这个JavaScript适用于FF而不是IE8
- 使用eval()在IE8和ie7中不工作,但在IE9, FF,Chrome中工作