Пытаясь скрыть div с контентом на вызове JavaScript

Я пытался использовать это http://www.gloucesterwebdesign.com/showhidecontent/

но вместо ссылки я хочу, чтобы JavaScript вызывал эту функцию

лайк

    if(input == true){
      toggleLayer('id');
    }
    else if(input == false){
      toggleLayer('id2');
    }

скрипт вызывает функцию toogleLayer, но ничего не происходит, и проклинает, что входное значение помещается в другой скрипт, который запускается при загрузке страницы. Мне было интересно, если это проблема. Кто-нибудь, кто любит комментировать это?

- Обновление - Так что меня попросили больше кода, http://pastebin.com/UD3tjz1s

  • Значение в localStorage установлено на другой странице, поэтому вы получите эту страницу только после этого. это только для того, чтобы показать, какие данные я использую

Я немного новичок в javaScript, так что надеюсь, что это не так сложно читать

1 ответ

Решение

Хорошо, я сделал быстрый тест, и это сделает это. Просто замените вашу текущую функцию, это намного чище и проще. Кроме того, document.getElementById(id) поддерживается в каждом текущем браузере и возвращается к IE6, поэтому, если вы не хотите поддержку netscape, вы не делаете этого; нужен весь дополнительный код вашего ресурса.

function toggleLayer(id){
    // get the element (this is supported in all modern browsers)
    var element = document.getElementById(id);
    // set the style display of this element to none if its set to be
    // anything else than none, otherwise set it to block
        element.style.display = element.style.display != "none"
            ? "none"
            : "block";
 }

Я проверил это, и это сработало.

Редактировать - [другое дело!]

Хорошо, извините, я как-то не так понял, но я нашел способ это исправить. Вот к чему это сводится: поскольку ваш javascript-код находится над вашими элементами DIV, он выполняется ДО того, как элементы DIV будут созданы страницей. Так что javascript будет искать элементы, и он будет возвращать неопределенный, потому что, ну, они еще не определены. Поэтому вам придется либо переместить ваш скрипт непосредственно перед конечным тегом, либо добавить следующее в код (пожалуйста, не добавляйте интервал, чтобы ваша функция работала):

window.onload = function(){
        setInterval(setSize,1000);
        // the rest of your functions here - the above interval is so you can see it toggling
}
// function toggleLater(){...} here

Возможно, вы также захотите переместить ToggleLayer ВНЕ из функции window.onload, так как иначе вы не можете вызвать его со страницы (опять же, функция теперь определена как INSIDE window.onload и выходит за пределы области видимости для элементов DIV...),

Другие вопросы по тегам