我刚刚发现半年后,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>
答案 0 :(得分:2)
有些元素IE8及以下不能添加textNodes,尽管IE9和其他浏览器都有。
option element(use optionelement.text)
input element(use inputelement.value)
style element(use styleelement.styleSheet.cssText)
script element(use scriptelement.text)
答案 1 :(得分:1)
getElementsByClass
不是内置函数,因此它可能来自您正在使用的与IE8不兼容的其他库。在这种情况下,它可能返回的东西不是一组有效的DOM节点。
如果您可以发布该方法的功能,那将有助于我们进行调试。否则,您可以尝试使用document.querySelectorAll('.field_' + name)
,看看是否修复了它; IE8以上版本支持此功能,至少在标准模式下是这样。
getElementsByClass
功能看起来不错,虽然没有单元测试,但我很难100%确定。一种测试方法是尝试用getElementsByClass
替换return document.querySelectorAll('.field_' + name)
的正文并查看是否修复了它...这样,getElementsByClass
函数仍然存在,所以你的所有其他代码没有被破坏,但它可能更正确。
答案 2 :(得分:0)
好吧,删除
末尾的* e.appendChild(document.createTextNode(value + ' '));*