Пытаясь скрыть 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...),