mootools: new Element () - не будет работать в IE - PullRequest
1 голос
/ 15 февраля 2011

Я пытаюсь создать группу элементов и вставить их в таблицу. В FF и Chrome мой код работает нормально, но в IE ничего не происходит, когда я нажимаю кнопку «вставить строку». Нет ошибок или что-то: \

Я сократил свой код до простого примера, чтобы попытаться выяснить, что я делаю неправильно.

function insert_row(){
    //get table element
    var filterTable = $('table_search_filter');

    //create new objects
    var tr = new Element('tr');
    var td1 = new Element('td');
    var td2 = new Element('td');        
    var td3 = new Element('td');
    var select_project = new Element('select', {'id':'select_secondary_' + filterCounter});


    //add elements to table
    td2.grab(select_project);
    tr.grab(td1);   
    tr.grab(td2);   
    tr.grab(td3); 
    filterTable.grab(tr);
}

Когда я записываю свои tr элементы innerHTML, я получаю разные результаты в FF и IE:

FF - <td></td><td><select id="select_secondary_0"></select></td><td></td>

IE - <TD></TD><TD><SELECT id=select_secondary_0></SELECT></TD><TD></TD>

Так что, похоже, IE обрабатывает это по-другому. Во-первых, теги в верхнем регистре, что не хорошо. Во-вторых, мой идентификатор без символов. Зачем? Я действительно растерялся, долгий день: \

Ответы [ 3 ]

5 голосов
/ 15 февраля 2011

Я вспоминаю проблему с некоторыми версиями IE, которая не позволяла динамически создавать элементы таблицы, если в вашей таблице не было элементов tbody / thead.

4 голосов
/ 15 февраля 2011

Это может быть ошибка в mootools.Поэкспериментировав с этим, я смог создать сценарий, который РАБОТАЕТ - обратите внимание, я просто добавил тег tbody в таблицу и поместил свойство id вместо таблицы.Код теперь работает как положено.Это не само по себе "ответ", но это может быть жизнеспособным решением для вас.

JSFiddle: http://jsfiddle.net/Brvyn/

<script type="text/javascript">
function insertRow() {
    //get table element
    var filterTable = $('table_search_filter');

    //create new objects
    var tr = new Element('tr');
    var td1 = new Element('td');
    td1.innerHTML = "first column";
    var td2 = new Element('td');      
    var td3 = new Element('td');
    td3.innerHTML = "third column";
    var select_project = new Element('select', {'id':'select_secondary'});


    //add elements to table
    select_project.inject(td2);
    td1.inject(tr);   
    td2.inject(tr);   
    td3.inject(tr); 
    tr.inject(filterTable);
    return false;

}
</script>

<a href="#" onclick="return insertRow();">Fire</a>

<br /> Table:

<table>
    <tbody id="table_search_filter"></tbody>    
</table>
2 голосов
/ 07 декабря 2011

В связанной заметке мы только что отладили скрипт, который использует Mootools v1.1 (не спрашивайте) - и IE9, похоже, имел проблемы со следующим синтаксисом:

var select_project = new Element('select', {'id':'select_secondary'});

Но переписано так:

var select_project = new Element('select');
select_project.setAttribute('id', 'select_secondary');

... все работало нормально. Не знаю, почему это так - но я подумал, что это наблюдение может быть кому-то полезно.

P.S. Я предполагаю, что эта ошибка могла быть исправлена ​​в более поздней версии Mootools.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...