2010-05-02 2 views
0

Пройдите here, чтобы увидеть веб-приложение на основе iframe. Нажмите на карту Австралии, выберите город, затем купите билеты. Теперь вы увидите форму корзины, расположенную в правом нижнем углу. Проблема в IE8, я не могу удалить отмеченные строки из таблицы; , тогда как в других браузерах, таких как FireFox3.6, Opera10, Safari4 и Chrome4, это действие .Ошибка IE8 при использовании действий dyanamic form

Ниже приведен Javascript. Он не использует jQuery, так как часть требования не разрешена никакая структура! И iframes - мой лучший выбор, ajax просто убьет меня под этим ограничением.

/* 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, и это not available на IE.

Вы должны включить пользовательскую функцию для этой функции.

Лично мне нравится немного измененная версия 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