Чудеса в HTML

User avatar
Escaper
Уже с Приветом
Posts: 1474
Joined: 11 Feb 2001 10:01
Location: Atlanta, GA, USA

Чудеса в HTML

Post by Escaper »

Следующий HTML-код при клике по странице выдаёт ошибку "undefined". Хотелось бы услышать какие-нибудь идеи на тему, почему так происходит. Спасибо.

Code: Select all

<HTML>
  <HEAD>
      
    <script language="JavaScript">

    function OnFormClick()
    {
      alert(window.document.all.MyTable.rows(0).cells("id1").children);
    }
      
    </script>
  </HEAD>

  <body onclick="OnFormClick()">
 
    <table id=MyTable>
      <tr>
        <td></td>
        <td id="id1" style="display: none"><input type="button"></td>
        <td id="id2" style="display: none"></td>
      </tr>
    </table>
  </body>
</HTML>
Make no small plans, for they have no power to stir the blood. Daniel H.Burnham
User avatar
dot
Уже с Приветом
Posts: 4461
Joined: 17 Jun 2003 04:41

Re: Чудеса в HTML

Post by dot »

Escaper wrote:Следующий HTML-код при клике по странице выдаёт ошибку "undefined". Хотелось бы услышать какие-нибудь идеи на тему, почему так происходит. Спасибо.

Меня сейчас все раскритикуют, но попробую высказать предположение, что все дело в "display: none", при изменении на "visibility: hidden" все ок. Т.е. я бы просто эту конпку поместила в hidden div и просто ее перемещала при помощи replaceChild() или appendChild(). Я помню у меня были какие-то заморочки с display:none и hidden полями. Сейчас уже в точности не скажу в чем была проблема, но если нужно могу попробовать найти.

Если Вас интересует теоретическая сторона вопроса - сорри.

Кстати, а почему Вы используете document.all.MyTable а не getElementById("MyTable")?
lenkin
Новичок
Posts: 54
Joined: 03 Nov 2001 10:01
Location: California

Post by lenkin »

Доступ к коллекции (collection) через id - .cells("id1") - вернет вам массив, а не объект([object]). Тоже самое с .children
Попробуйте так:

function OnFormClick()
{
alert(window.document.all.MyTable.rows(0).cells("id1", 0).children(0));
}


Функция
function OnFormClick()
{
alert(window.document.getElementById("MyTable").rows(0).cells("id1", 0).children(0).outerHTML);
}
покажет <input type="button"> . Проверьте. в IE конечно.

Return to “Вопросы и новости IT”