Javascript - функция innerHTML в IE - PullRequest
2 голосов
/ 16 ноября 2010

У меня есть HTML-файл с содержанием

<html>
<body>
<script language="JavaScript">
    function fun1()
    {
        alert(document.getElementById('id1').innerHTML);
    }
</script>
<div id="id1">
    <ul>
        <li>Here111</li>
        <li>Here222</li>
        <li>Here333</li>
    </ul>
</div>
<a href="javascript:void(0)" onclick="fun1()">Click</a>
</body>
</html>

В функции innerHTML я получаю только

<ul>
    <li>Here111
    <li>Here222
    <li>Here333</li>
</ul>

Отсутствует тег </li> Как мне получить весь контент?

Ответы [ 5 ]

1 голос
/ 16 ноября 2010

Вы установили id div в качестве «test», но вы получаете его по «test1»

alert(document.getElementById('test1').innerHTML);

оно должно быть

alert(document.getElementById("test").innerHTML);
1 голос
/ 16 ноября 2010

Ваш скрипт ссылается на идентификатор с именем test1 , но в вашем html его нет.

Если вы делаете это так:

<html>
    <head>
        <script>
            function test(){
                alert(document.getElementById('test1').innerHTML);
            }
        </script>
    </head>
    <body>
        <div id="test1">
            <ul>
                <li>This is first</li>
                <li>This is Second</li>
            </ul>
        </div>
        <a href="#" onclick="test();">hhhhhh</a>
    </body>
</html>

, это работаетхорошо даже в IE 7/8.

0 голосов
/ 16 ноября 2010

Это не неверно.Для элементов <li> закрывающий тег необязателен в HTML, поэтому IE возвращает здесь допустимый фрагмент HTML (не всегда так).

Если вам нужны закрывающие теги, вам нужно создатьсвою собственную строку HTML, обходя DOM.

0 голосов
/ 16 ноября 2010

Также есть свойство outerHTML (к сожалению, не поддерживается в некоторых браузерах). Возвращает весь элемент.

0 голосов
/ 16 ноября 2010

Добавить <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> в начале html

...