Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Обновление части таблицы


Автор: Avtor 18.7.2007, 20:47
Помогите разобраться  - этот скрипт корректно работает только в Mozilla, в IE совсем не работает, в Opera не корректно работает. Подскажите как подправить его.
Код

<HTML>
  <HEAD>
    <TITLE>const(ant)</TITLE>
<script LANGUAGE="JavaScript">

Код

  var cities = ["London", "Moscow", "New York", "Tokyo", "Sydney"];
  var tempsF = [33, 12, 20, 40, 75];
  function showData() {
    var tableData = "";
    for (var i = 0; i < cities.length; i++) {
      tableData += "<TR><TD>" + cities[i] + "</TD><TD>" + tempsF[i] + "</TD></TR>";
    }
    document.getElementById("display").innerHTML = tableData;
  }

Код

</SCRIPT>
  </HEAD>
  <BODY onLoad="javascript:showData();">
    <H1>The const keyword</H1>
    <TABLE ID="temps" border="1">
      <TR>
        <TD>City</TD>
        <TD>Temperature</TD>
      </TR>
      <TBODY ID="display">
      </TBODY>
    </TABLE>
  </BODY>
</HTML>

Автор: coyl 18.7.2007, 21:00
как раз сейчас столкнулся с той же проблемой. порыл яндекс и нашел, что в innerHTML для <table> можно писать не все. нао через DOM работать. Однако, в моём случае это очень геморно, шаблонизатор генерит хтмл, а я его вставляю, так что ищу обходные пути =)

В частности, если можно как-нибудь преобразовать html в объект элемента, то можно потом приаппендить его к таблице без проблем. 
То есть если у меня есть строка "<tr><td>tralivali</td></tr>" и её можно преобразовать в объект, то все шоколадно. ишу пути =)

Автор: Avtor 18.7.2007, 21:05
Да через DOM можно, но также очень неудобно в моем случае. Это я просто кинул облегченный пример. На самом деле мне этот кусок таблицы возвращается с помощью ajax-технологии из php-файла.

Автор: Loengreen 18.7.2007, 21:15
to Avtor:
http://forum.vingrad.ru/forum/topic-162929.html

Автор: Avtor 18.7.2007, 21:33
Спасибо. Тока создавать таблицу с пом-ю DOM я уже давно научился. 

Автор: coyl 18.7.2007, 22:20
да. невнимательный староста =)

У меня на самом деле тоже этот кусок аяксом приходит =) причем он берется из обычного шаблона страницы. поэтому очень не хочеться домовых вызывать =)

Автор: Burrr 19.7.2007, 10:29
Avtor, тебе обязательно заполнять именно содержимое тега <table>? А что если всю таблицу положить в ДИВ и переписывать его содержимое, тогда можно обойтись и без DOM (иначе - никак, ИМХО). Пример (не проверял, но суть ухватить можно):
Код
<HTML>
  <HEAD>
    <TITLE>const(ant)</TITLE>
<script type="text/javascript">
var cities = ["London", "Moscow", "New York", "Tokyo", "Sydney"];
  var tempsF = [33, 12, 20, 40, 75];
  function showData() {
    var tableData = "<TABLE ID=\"temps\" border=\"1\">\
      <TR>\
        <TD>City</TD>\
        <TD>Temperature</TD>\
      </TR>";
    for (var i = 0; i < cities.length; i++) {
      tableData += "<TR><TD>" + cities[i] + "</TD><TD>" + tempsF[i] + "</TD></TR>";
    }
    tableData += "</table>";
    document.getElementById("display").innerHTML = tableData;
  }
</SCRIPT>
  </HEAD>
  <BODY onLoad="javascript:showData();">
    <H1>The const keyword</H1>
    <DIV ID="display"></div>
  </BODY>
</HTML>


Автор: coyl 19.7.2007, 13:18
ну так я делал, но это как-то кривовато (( хочется всетаки извернуться и добавлять именно tr

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)