Javascript getElementById - чтение работает, изменение не - PullRequest
0 голосов
/ 24 октября 2009

Итак, у меня довольно сложная работа с Ajax. Он загружает новый HTML (включая теги Div и все), чтобы показать на странице. Я добавил ссылку «еще» для загрузки дополнительных данных.

Эта дополнительная ссылка ссылается на мою функцию javascript. Ссылка 'more' находится в div, которому я присвоил уникальный идентификатор. В следующий раз, когда вызывается функция загрузки, я использую document.getElementById (идентификатор) .style.display = "none"; «удалить» этот div из внешнего вида страницы.

Для этого я установил ловушки ошибок, div с таким идентификатором найден без проблем, но javascript не может изменить мое свойство стиля.

Я протестировал оповещение (document.getElementById (идентификатор) .innerHTML); и это сработало без проблем - отсюда и название вопроса.

Итак, у кого-нибудь есть идеи / мне нужно предложить больше информации? Основная проблема в том, что он нигде не выдает никаких ошибок, но не может выполнить заданную мной задачу ...

Вот немного кода, чтобы пойти с ним -

try 
{
    var myidthing = "morelink" + ContentStart.toString(); //the id is correct
    var div = document.getElementById(myidthing);
    if (!div)
    {
    }
    else
    {
        div.style.display="none"; //this doesn't work, but doesn't raise an error
        alert(div.innerHTML); //this works without problem
    }
}
catch(theerr)
{
    alert(theerr);
}

-------------------------> ИЗМЕНИТЬ <------------------- ------ Мне невероятно жаль, если я расстроил кого-то. Я тоже злюсь на себя, потому что это было глупо в моем коде. По сути, у меня была переменная, в которой содержалось содержимое родительского div. Затем я (успешно) удалил div с помощью метода removeChild (). Затем мой код вставил содержимое этого объекта (включая div, который я хотел удалить) обратно в родительский div. Я переключил порядок, и теперь он работает нормально. </p>

Опять, простите меня за это.

Ответы [ 2 ]

1 голос
/ 24 октября 2009

Выбрасывая несколько идей о вещах, которые нужно искать:

  • Вы сказали, что div генерируется javascript. Возможно ли, что цель, на которую вы нацеливаетесь, не та, о которой вы думаете? Возможно, вы нацеливаетесь на другой div, который уже скрыт или заблокирован ... или, возможно, отображаемый innerHTML имеет элемент, отличный от того, на который вы нацелены. Поместите предупреждение или точку останова сценария в случае if (! Div) и посмотрите, идет ли он по этому пути.
  • Если приведенный выше код является только урезанной версией вашего фактического кода, проверьте свой фактический код на наличие опечаток (например: style.display = "none;";)
  • Используя плагин FireBug для FireFox, проверьте целевой элемент после завершения операции и убедитесь, что в информации о стиле ничего не отображается. Если нет, воспользуйтесь отладчиком FireBug, чтобы просмотреть ваш javascript и посмотреть, сможете ли вы выяснить, почему.
  • Используйте FireBug, чтобы разбить все ошибки скрипта, в случае, если есть другая ошибка, вызывающая это поведение.
0 голосов
/ 25 октября 2009

Попробуйте пустые кавычки вместо 'none' и посмотрите, работает ли это?:

document.getElementById('element_id').style.display="";

В противном случае не меняйте стиль, просто добавьте класс, который скрывает элемент.

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