HTML Dom манипулирование: проблема IE7 - PullRequest
0 голосов
/ 04 августа 2011

Почему этот пример кода не работает в IE7. В чем проблема? Спасибо.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <title>Test</title>

        <script language="javascript" type="text/javascript">

            function initialize() 
            {
                for(var i=0; i < 10; i++)
                {
                    var tab = document.getElementById("search").childNodes[0];
                    var line = document.createElement("tr");
                    var column = document.createElement("td");
                    column.appendChild(document.createTextNode("DATA"));
                    line.appendChild(column);
                    tab.appendChild(line);
                }
            }

        </script>
    </head>
    <body onload="initialize()"> 
        <div id="search" class="bulle"><table><tr><td></td><td align="right">X</td></tr><tr><td><table id="tableResult"><table></td><td></td></tr></table></div>
    </body>
</html>

1 Ответ

2 голосов
/ 04 августа 2011

В IE вы должны добавлять строки таблицы в тело, а не напрямую в таблицу. Кроме того, в некоторых браузерах первым дочерним элементом div будет текстовый узел, если между разметкой DIV и TABLE есть какой-либо пробел. Так что либо переместите идентификатор в таблицу (или элемент tbody), либо используйте:

function initialize() {
    var div = document.getElementById("search");
    var tbody = div.getElementsByTagName('tbody')[0];

    // create rows, cells, etc.

    tbody.appendChild(line);
}

Обратите внимание, что все таблицы со строками будут иметь элемент tbody, даже если теги являются необязательными в разметке (т. Е. Ваша разметка не имеет элемента tbody, но таблица в DOM будет иметь его).

В MDN есть руководство по использованию методов таблицы DOM: https://developer.mozilla.org/en/Gecko_DOM_Reference/Examples#Example_8:_Using_the_DOM_Table_Interface.

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