Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   IE ругается, объясните причину (https://javascript.ru/forum/jquery/11873-ie-rugaetsya-obyasnite-prichinu.html)

Invis1ble 18.09.2010 22:05

IE ругается, объясните причину
 
Привет всем!!! Есть такой js-скрипт (я в js новичок, поэтому ногами не бейте):
function ResetEdit()
{
  editForm.empty();
  editableBlock.slideUp(600);

  addCommentForm.load('?page=comment-add' , {}, function()
  {
    jQuery('input#comment-add').click(function()
    {
      RefreshCommentAddForm();
    })
  })

  formHeader.text('ДОБАВЛЕНИЕ КОММЕНТАРИЯ');
}

function RefreshCommentAddForm()
{
  var comment = jQuery('textarea:last').val();

  addCommentForm.load('?page=comment-add&tid=' + tid + '&offset=' + offset, {comment: comment}, function()
  {
    var location = jQuery('input#redirect-location').val();

    if (location != undefined)
      window.location.reload(location);
    else
    {
      jQuery('input#comment-add').click(function()
      {
        RefreshCommentAddForm();
      })
    }
  })
}

function RefreshCommentEditForm()
{
  var edComment = jQuery('textarea#comment').val();

  editForm.load('?page=comment-edit&tid=' + tid + '&offset=' + offset + '&id=' + id, {comment: edComment}, function()
  {
    var location = jQuery('input#redirect-location').val();

    if (location != undefined)
    {
      editableBlock.slideUp(600);
      window.location.reload(location);
    }
    else
    {
      jQuery('input#comment-edit').click(function()
      {
        RefreshCommentEditForm();
      })
    }
  })
}

function RefreshTopicEditForm()
{
  editForm.load('?page=topic-edit&tid=' + tid, {topic_name: jQuery('input#topic-name').val(), topic_description: jQuery('input#topic-description').val(), topic_message: jQuery('textarea#topic-message').val()}, function()
  {
    var location = jQuery('input#redirect-location').val();
    
    if (location != undefined)
    {
      editableBlock.slideUp(600);
      window.location.reload(location);
    }
    else
    {
      jQuery('input#topic-edit').click(function()
      {
        RefreshTopicEditForm();
      })
    }
  })
}

function RefreshMessageEditForm()
{
  editForm.load('?page=topic-edit&tid=' + tid, {topic_message: jQuery('textarea#topic-message').val()}, function()
  {
    var location = jQuery('input#redirect-location').val();

    if (location != undefined)
    {
      editableBlock.slideUp(600);
      window.location.reload(location);
    }
    else
    {
      jQuery('input#topic-edit').click(function()
      {
        RefreshMessageEditForm();
      })
    }
  })
}

jQuery(document).ready(function()
{
  addCommentForm = jQuery('#add-comment-form');
  editableBlock = jQuery('#editableBlock');
  editForm = jQuery('#edit-form');
  formHeader = jQuery('#formHeader');

  tid = jQuery('input#tid').val();
  offset = jQuery('input#offset').val();

  editableBlock.hide();

  addCommentForm.load('?page=comment-add' , {}, function()
  {
    jQuery('input#comment-add').click(function()
    {
      RefreshCommentAddForm();
    })
  })

  jQuery('a.comment-edit').click(function()
  {
    var link = jQuery(this);
    id = link.attr('id');
    var block = link.parent().parent();

    editableBlock.html(
      '<div class="editHeader">редактируемый комментарий | ' +
      '<a class="ResetEdit" onclick="ResetEdit();" href="javascript: void(0);">' +
      'отменить редактирование</a></div>').append(jQuery('#comment-content', block).html());

    editForm.load('?page=comment-edit&id=' + id, {}, function()
    {
      jQuery('input#comment-edit').click(function()
      {
        RefreshCommentEditForm();
      })
    })

    formHeader.text('РЕДАКТИРОВАНИЕ КОММЕНТАРИЯ');
    addCommentForm.empty();
    editableBlock.slideDown(600);
  })

  jQuery('a.comment-delete').click(function(event)
  {
    var responce = confirm('Вы действительно хотите удалить этот комментарий?');
    if (!responce) event.preventDefault();
  })

  jQuery('a.topic-edit').click(function()
  {
    var blockHtml = jQuery('#captionTopicName').html() + '<br />' +
                    jQuery('#captionTopicDescription').html() + '<br />' +
                    jQuery('#topic-message').html();

    editableBlock.html(
      '<div class="editHeader">редактируемая тема | ' +
      '<a class="ResetEdit" onclick="ResetEdit();" href="javascript: void(0);">' +
      'отменить редактирование</a></div>').append(blockHtml);

    editForm.load('?page=topic-edit&tid=' + tid, {}, function()
    {
      jQuery('input#topic-edit').click(function()
      {
        RefreshTopicEditForm();
      })
    });

    formHeader.text('РЕДАКТИРОВАНИЕ ТЕМЫ');
    addCommentForm.empty();
    editableBlock.slideDown(600);
  })

  jQuery('a.topic-delete').click(function()
  {
    var responce = confirm('Вы действительно хотите удалить эту тему?');
    if (!responce) event.preventDefault();
  })

  jQuery('a.message-edit').click(function()
  {
    var blockHtml = jQuery('#topic-message').html();

    editableBlock.html(
      '<div class="editHeader">редактируемое сообщение | ' +
      '<a class="ResetEdit" onclick="ResetEdit();" href="javascript: void(0);">' +
      'отменить редактирование</a></div>').append(blockHtml);

    editForm.load('?page=topic-edit&tid=' + tid, {}, function()
    {
      jQuery('input#topic-edit').click(function()
      {
        RefreshMessageEditForm();
      })
    });

    formHeader.text('РЕДАКТИРОВАНИЕ СООБЩЕНИЯ');
    addCommentForm.empty();
    editableBlock.slideDown(600);
  })
})

В опере и гугл-хроме скрипт работает нормально, IE выдает "Объект не поддерживает это свойство или метод (строка 106, символ 3)". Это он ругается на
editableBlock = jQuery('#editableBlock');

Объсните плиз, причину

MadGest 18.09.2010 22:26

Пугающий объем.....

inGray 18.09.2010 22:31

Ничего подобного... Вовсе не на эту строку... Покажите полностью вызывающий код.

Invis1ble 18.09.2010 22:57

MadGest,
объем из-за стиля написания кода
inGray,
именно на эту. Я проверял, добавляя пустые строки в код. Что имеется ввиду под "вызывающий код" ? Если js - то я привел код полностью

inGray 18.09.2010 23:05

EditForm случайно не айдишник формы?

Invis1ble 18.09.2010 23:07

inGray,
не, editForm - айдишник дива
comment-list.php
...
<div id="edit-form"></div>
...

Invis1ble 18.09.2010 23:14

точнее не айдишник дива, а объект, получаемый по id="edit-form", т.е. div

inGray 18.09.2010 23:14

Попробуйте поменять имена переменных editableBlock и editForm?

Invis1ble 18.09.2010 23:20

inGray,
просто сменить имена на другие? А разве это может быть причиной? Ведь в других браузерах все нормально работает...

inGray 18.09.2010 23:22

Да, просто сменить имена? Ругается же именно на имя переменной...

Invis1ble 18.09.2010 23:28

inGray,
странно, поменял (просто добавил "1" в конце имени переменных), теперь ругается на
formHeader = jQuery('#formHeader');

поменять имя тоже? Чесно говоря, ума не приложу, что это за странност такие...

inGray 18.09.2010 23:32

Думаю есть стандартный объект с соответствующим именем или айдишником

Invis1ble 18.09.2010 23:33

пришлось менять все имена, т.к. ругался он на все... Теперь все работает нормально, только у меня вопрос - из-за чего весь этот бред? Какое-нибудь кэширование может?

Invis1ble 18.09.2010 23:35

inGray,
Думаю есть стандартный объект с соответствующим именем или айдишником
да ну, не может быть такого... На все переменные ругался

Invis1ble 18.09.2010 23:40

inGray,
ты не в курсе, может причина в каком-либо кэшировании?

inGray 18.09.2010 23:40

Покажите конечный ХТМЛ?

Invis1ble 18.09.2010 23:47

<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <link href="css/common.css" type="text/css" rel="stylesheet" />
    <script type="text/javascript" src="http://127.0.0.1/forum/js/jquery.js"></script>
    <script type="text/javascript" src="http://127.0.0.1/forum/js/menu.js"></script>
  </head>
  <body>
      <script type="text/javascript" src="http://127.0.0.1/forum/js/comment-list.js"></script>
  <script type="text/javascript" src="http://127.0.0.1/forum/js/bbtags.js"></script>
  <div class="mainMenu">
        <a class="mainMenuItem" href="http://127.0.0.1/forum/?page=logout">выход</a><br />
      <a class="mainMenuItem" href="http://127.0.0.1/forum/">домой</a><br />
      <a class="mainMenuItem" href="http://127.0.0.1/forum/?page=registration">регистрация</a><br />
      <a class="mainMenuItem" href="http://127.0.0.1/forum/?page=topic-list">форум</a><br />
  </div>  <div class="caption">
    <div id="captionTopicName">тема номер 5</div>
    <div id="captionTopicDescription">описание</div>
  </div>
  <table class="list" cellspacing=0>
    <tr>
      <td class="postedTime" colspan=2>Отправлено: 2010-09-18 21:41:12</td>
    </tr>
    <tr>
      <td class="userProfile">
        <div id="userNickname">Невидимка</div>
          <a href="http://127.0.0.1/forum/?page=show-avatar&id=23" target="_blank">
            <img class="avatar" src="http://127.0.0.1/forum/avatars/23.jpg" name="avatar" alt="Аватар" title="показать в исходном качестве" />
          </a>
        <div id="userRole">Администратор</div>
                                        <br />Зарегистрирован: <br />2010-09-04 14:26:29<br />        Сообщений: 6      </td>
      <td class="message">
        <div id="topic-message">сообщение</div>
        <p>
          [<a class="reply" id="23" href="#form">ответить</a>]
            [<a class="topic-edit" href="#edit-form">редактировать тему</a>] [<a class="topic-delete" href="http://127.0.0.1/forum/?page=topic-delete&tid=18">удалить тему</a>]
        </p>
        <br /><br />
      </td>
    </tr>
      <tr>
        <td class="postedTime" colspan=2>Отправлено: 2010-09-18 21:49:54</td>
      </tr>
      <tr>
        <td class="userProfile">
          <div id="userNickname">Невидимка</div>
          <a href="http://127.0.0.1/forum/?page=show-avatar&id=23" target="_blank">
            <img class="avatar" src="http://127.0.0.1/forum/avatars/23.jpg" name="avatar" alt="Аватар" title="показать в исходном качестве" />
          </a>
          <div id="userRole">Администратор</div>
                                                  <br />Зарегистрирован: <br />2010-09-04 14:26:29<br />          Сообщений: 6        </td>
        <td class="message">
          <div id="comment-content">comment 1</div>
            <p>
              [<a class="reply" id="23" href="#form">ответить</a>]
                [<a class="comment-edit" id="97" href="#edit-form">редактировать комментарий</a>]
                [<a class="comment-delete" href="http://127.0.0.1/forum/?page=comment-delete&tid=18&offset=0&id=97">удалить комментарий</a>]
            </p>
            <br /><br />
        </td>
      </tr>
    </table>
      <div class="caption" id="formHeader">ДОБАВЛЕНИЕ КОММЕНТАРИЯ</div>
  <div id="editableBlock"></div>
<table id="bbtags-panel" cellspacing=0>
  <tr>
    <td class="bbtags-cell"><span class="bbtags-label">BB-коды</span></td>
    <td class="bbtags-cell">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/bold.gif" alt="жирный" title="жирный" onclick="tag('[B]','[/B]')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/italics.gif" alt="курсив"  title="курсив" onclick="tag('[I]','[/I]')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/underline.gif" alt="подчеркнутый" title="подчеркнутый" onclick="tag('[U]','[/U]')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/strikethrough.gif" alt="зачеркнутый" title="зачеркнутый" onclick="tag('[S]','[/S]')">
    </td>
  </tr>
  <tr>
    <td class="bbtags-cell"><span class="bbtags-label">смайлы</span></td>
    <td class="bbtags-cell">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/1.gif" alt=":-)" title=":-)" onclick="tag(':-)','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/2.gif" alt=":-(" title=":-(" onclick="tag(':-(','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/3.gif" alt=";-)" title=";-)" onclick="tag(';-)','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/4.gif" alt=":-D" title=":-D" onclick="tag(':-D','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/5.gif" alt="8-)" title="8-)" onclick="tag('8-)','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/6.gif" alt="=-O" title="=-O" onclick="tag('=-O','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/7.gif" alt=">:o" title=">:o" onclick="tag('>:o','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/8.gif" alt=":-|" title=":-|" onclick="tag(':-|','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/9.gif" alt="]:->" title="]:->" onclick="tag(']:->','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/10.gif" alt="[:-}" title="[:-}" onclick="tag('[:-}','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/11.gif" alt=":TIRED:" title=":TIRED:" onclick="tag(':TIRED:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/12.gif" alt=":STOP:" title=":STOP:" onclick="tag(':STOP:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/13.gif" alt=":THUMBS UP:" title=":THUMBS UP:" onclick="tag(':THUMBS UP:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/14.gif" alt="@=" title="@=" onclick="tag('@=','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/15.gif" alt=":HELP:" title=":HELP:" onclick="tag(':HELP:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/16.gif" alt=":COOL:" title=":COOL:" onclick="tag(':COOL:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/17.gif" alt="%)" title="%)" onclick="tag('%)','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/18.gif" alt=":OK:" title=":OK:" onclick="tag(':OK:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/19.gif" alt=":BRAVO:" title=":BRAVO:" onclick="tag(':BRAVO:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/20.gif" alt=":ROFL:" title=":ROFL:" onclick="tag(':ROFL:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/21.gif" alt=":NO:" title=":NO:" onclick="tag(':NO:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/22.gif" alt=":DONT KNOW:" title=":DONT KNOW:" onclick="tag(':DONT KNOW:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/23.gif" alt=":YAHOO:" title=":YAHOO:" onclick="tag(':YAHOO:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/24.gif" alt=":HI:" title=":HI:" onclick="tag(':HI:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/25.gif" alt=":BYE:" title=":BYE:" onclick="tag(':BYE:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/26.gif" alt=":YES:" title=":YES:" onclick="tag(':YES:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/27.gif" alt=":WRITE:" title=":WRITE:" onclick="tag(':WRITE:','')">
      <img class="smile" src="http://127.0.0.1/forum/images/smiles/28.gif" alt=":SCRATCH:" title=":SCRATCH:" onclick="tag(':SCRATCH:','')">
    </td>
  </tr>
</table>  <div id="add-comment-form"></div>
  <div id="edit-form"></div>
  <input type="hidden" id="tid" value="18" />
  <input type="hidden" id="offset" value="0" />  </body>
</html>

inGray 18.09.2010 23:52

Непонятно..... Я в замешательстве...

Invis1ble 18.09.2010 23:59

только что обнаружил еще несколько проблем с этим скриптом, возникающих только в IE..

Invis1ble 19.09.2010 00:21

inGray
Все равно, спасибо большое, что уделил время +1. Попробую сам пока разобраться..

Invis1ble 19.09.2010 00:22

Если кто знает причину данного шита, напишите плиз

sysya 19.09.2010 04:57

Нужно чтоб идентификаторы элементов все были уникальны, тогда браузеры, точно следующие правилам, ругаться не будут. Например заметил такую ошибку 2 раза userNickname
Хотя не уверен что правильно понял вопрос :)

Invis1ble 19.09.2010 07:42

sysya,
да, но я ведь вообще не использую этот элемент в скрипте. Все использующиеся в данном коде элементы имеют уникальные идентификаторы

sysya 19.09.2010 14:03

А что если сделать не так jQuery('#edit-form') а так $('#edit-form')

micscr 19.09.2010 14:15

inGray, сложно объяснять, да? ;)

Что по теме: ТС выстави хотя бы на хостинг или прикрепи сюда свой скрипт, что гадать то на кофейной гуще когда есть дебагеры.

Invis1ble 19.09.2010 19:46

sysya,
попробовал заменить jQuery на $ - результатов не дало
micscr,
думаю до хостинга мой "чудо-скрипт" еще не дорос, поэтому прикрепляю архив. В базу записан один юзер - администратор (логин - admin, пароль - 123456), одна топик и один комментарий к нему.

Invis1ble 19.09.2010 19:49

Чесно говоря не понял, получилось ли прикрепить файл... Вроде прикрепил, но че-то не вижу его в комменте...

Invis1ble 19.09.2010 19:55

Вложений: 1
Все, разобрался, оказывается я rar-архив прикреплял, а надо zip... Вот:

micscr 20.09.2010 16:19

выставлять надо не все приложение а страничку с проблемой - проблема же в js - вот этот html + js и нужен. Настраивать и загружать дамп - никто не будет.
p.s. Хостинг есть и бесплатный. проблема что ли.

Invis1ble 20.09.2010 18:33

понял, попозжа залью


Часовой пояс GMT +3, время: 12:05.