2010-05-02 27 views
0

请转至here以查看基于iframe的网络应用程序。 点击澳大利亚地图,选择一个城市,然后购买一些门票。 现在您会看到位于右下角的购物车表单。 问题出在IE8中,我无法从表中删除已检查的行; ,而在其他浏览器中,例如FireFox3.6,Opera10,Safari4和Chrome4,此 操作没问题。使用动态表单动作时出现IE8错误

以下是相关的javascript。它不使用jQuery,作为要求的一部分 是没有框架允许的!而且内联框架是我最好的选择,阿贾克斯只会在这个限制下杀死我。

/* cartForm.js */ 
function toDeleteRoutes() //this function is executed before form is to be submitted. 
{ 
if(document.getElementsByClassName('delete_box').length > 0) //there're rows to delete 
{ 
    document.getElementById('cartForm').action ="./deleteRoutes.php"; 
    document.getElementById('cartForm').target ="section4"; 

    return true; //this enables the form to be submitted as usual. 
} 
else return false; //there is no more row in table to delete! 
} 

function toSendEmail() //this function is executed before form is to be submitted. 
{ 
document.getElementById('cartForm').action ="./sendEmail.php"; 
document.getElementById('cartForm').target ="section3"; 

document.getElementById('delete_btn').disabled = true; //disable delete button now 
return true; //this enables the form to be submitted as usual. 
} 

function toCancelPurchase() 
{ 
document.getElementById('cartForm').action ="./cancelPurchase.php"; 
document.getElementById('cartForm').target ="section4"; 

return true; //this enables the form to be submitted as usual. 
} 

我不知道哪个部分是错的,或者这只是因为IE8的螺丝钉?

回答

0

您正在使用document.getElementsByClassName方法,并且它在IE上是not available

您应该包含一个自定义函数来实现此功能。

个人而言,我喜欢Dustin Diaz implementation略加修改的版本:

function getElementsByClassName(node,classname) { 
    if (node.getElementsByClassName) { // use native implementation if available! 
    return node.getElementsByClassName(classname); 
    } else { 
    return (function getElementsByClass(searchClass,node) { 
     if (node == null) 
     node = document; 
     var classElements = [], 
      els = node.getElementsByTagName("*"), 
      elsLen = els.length, 
      pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)"), i, j; 

     for (i = 0, j = 0; i < elsLen; i++) { 
     if (pattern.test(els[i].className)) { 
      classElements[j] = els[i]; 
      j++; 
     } 
     } 
     return classElements; 
    })(classname, node); 
    } 
} 

检查下面的文章,也有可以使用大量的实现:

+0

感谢这个提示! – user330711 2010-05-02 08:09:32