DOM innerHTML не принимает мои данные HTML - PullRequest
0 голосов
/ 14 апреля 2010
    var popupcontent = myfunc(item.Id, i);
    tablepopup = document.createElement("table");
    tablepopup.innerHTML = popupcontent;
    highSlide.appendChild(tablepopup);
    tdAnkunft.appendChild(kirmiziOkLink);
    tdAnkunft.appendChild(highSlide);
    tableRow.appendChild(tdAnkunft);

Привет, myfunc возвращает HTML-код таблицы, такой как «таблица ../ таблица», но я получаю сообщение об ошибке: «htmlfile: неизвестная ошибка времени выполнения» Есть ли альтернативный способ разбить мои строковые данные "popupcontent" в tablepopup?

пример HTML-кода возвращается из myfunc

<table width="100%" border="0" cellspacing="1" cellpadding="2">
    <tr bgcolor="#FFFFFF" class="table_header" style="cursor: pointer;" onmouseover="this.bgColor='#EEEEEE';"
        onmouseout="this.bgColor='#FFFFFF';">
        <td bgcolor="#E4E4E4">
            Flug.
        </td>
        <td bgcolor="#E4E4E4">
            Flug Nr.
        </td>
        <td bgcolor="#E4E4E4">
            Flughafen Abflug
        </td>
        <td bgcolor="#E4E4E4">
            Datum
        </td>
        <td bgcolor="#E4E4E4">
            Abflug
        </td>
        <td bgcolor="#E4E4E4">
            Ankunft
        </td>
        <td bgcolor="#E4E4E4">
            C
        </td>
        <td bgcolor="#E4E4E4">
            S
        </td>
        <td bgcolor="#E4E4E4">
            &nbsp;
        </td>
    </tr>







    <tr bgcolor="#FFFFFF" onmouseover="this.bgColor='#EEEEEE';" onmouseout="this.bgColor='#FFFFFF';"
        style="cursor: pointer;">
        <td bgcolor="#FFFFFF" class="table_content" align="center">
            TK
        </td>
        <td class="table_content">
            351
        </td>
        <td class="table_content">
            Bremen - Frankfurt
        </td>
        <td class="table_content">
            13.05.2010
        </td>
        <td class="table_content" align="center">
            19:50
        </td>
        <td class="table_content" align="center">
            20:50
        </td>
        <td class="table_content" align="center">
            V
        </td>
        <td class="table_content" align="center">
            9
        </td>
        <td class="table_content" align="center">
            <img src="images/right.arrow.png" width="18" height="18" onclick="swapPlans('Bremen','349');">
        </td>
    </tr>
</table>

Ответы [ 2 ]

2 голосов
/ 14 апреля 2010

Вы можете попробовать

tablepopup.appendChild(document.createTextNode(popupcontent));

как альтернатива.

Из представленного кода выглядит, что ваше дерево DOM выглядит так:

<tr>
    <td id="tdAnkunft">
        <unknown id="kirmiziOkLink">
        <table id="tablepopup">
            popupcontent
        </table>
    </td>
</tr>

Возможно, убедитесь, что popupcontent возвращает действительное дерево <code><tr><td></td</tr>.

Если myfunc return точно соответствует коду, который вы указали в исходном [отредактированном] посте, то может показаться, что ваше дерево DOM является недействительным, поскольку <table id=tablepopup"> содержит недопустимый код. Ваше дерево DOM будет выглядеть так:

<table id="popuptable">
    <table>
        <tr>
            <td>
                Flug.
            </td>
            <td>
                Flug Nr.
            </td>
            <td>
                Flughafen Abflug.
            </td>
...
...
            <td>
                9.
            </td>
            <td>
                <img />
            </td>
        </tr>
    </table>
</table>

Обратите внимание, что у вас есть table в table, который является недействительным HTML. Это может быть вашей проблемой.

2 голосов
/ 14 апреля 2010

innerHTML ожидает строку с новым html элемента.myfunc() вероятно возвращает что-то, что не может быть проанализировано как html.Попробуйте передать что-то вроде tablepopup.innerHTML = "<em>hi!</em>"; Не могли бы вы опубликовать myfunc?

Кроме того, что вы подразумеваете под "действительным кодом таблицы HTML"?Если вы ожидаете, что .. отступит на один уровень каталога, это не сработает.Вы указываете не местоположение html-файла на компьютере, а фактический html в виде строки.Если вы хотите включить html из URL-адреса файла, вам необходим серверный язык, такой как PHP.

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