Я пытаюсь создать несколько кнопок, которые заставляют поле появляться в зависимости от того, какая кнопка нажата. Я делаю это, предоставляя каждому блоку собственный класс и передавая аргумент функции, чтобы определить, какой блок предназначен для цели. Затем я назначаю эту функцию атрибуту onclick каждой кнопки на странице (я знаю, что мне, вероятно, следует прикрепить обработчик события в отдельном файле). Вот функция:
var show = function(boxNumber){
if($(this).hasClass('shown')){
$(this).removeClass('shown');
$(this).html('Show');
$('.box'+boxNumber).fadeOut(1000);
}
else{
$(this).html('Hide');
$(this).addClass('shown');
$('.box'+boxNumber).fadeIn(1000);
}
};
HTML:
<span onclick="show(1)">Box 1</span>
<div class="box1"></div>
etc. for more boxes
Однако эта функция не работает. Во-первых, это ключевое слово, похоже, не нацелено на кнопку, потому что html кнопки не меняется при нажатии. Однако, когда я заменяю ключевое слово this классом кнопки, все работает нормально.
Во-вторых, функция хорошо закрашивает поля, но затем не скрывает их, если я снова нажимаю кнопку.
Я застрял, поэтому любая помощь будет оценена по достоинству! Спасибо.
button#
. Вероятно, поэтому ваш цикл не работал. - person Dave Zych   schedule 15.03.2013this
в контексте onclick — это не то, что вы думаете. Вам нужно будет передать его функции, чтобы получить нажатый<span/>
какthis
. Например:<span onclick="show(1,this)"/>
. Я добавил это к своему ответу. - person Aaron Blenkush   schedule 15.03.2013