Переключить текст с помощью функции, вызываемой с помощью onclick - PullRequest
0 голосов
/ 01 марта 2012

мой вопрос короткий, но я не мог понять его сам. У меня есть такая функция, как -> http://jsfiddle.net/gtU56/. Я вызываю javascript-функцию с прослушивателем событий (onclick) в моем html-коде. Сама функция более сложная, но мне нужен последний фрагмент. При нажатии «Показать больше» текст должен измениться. Почему текст не изменится?

Ответы [ 8 ]

3 голосов
/ 01 марта 2012

Поскольку функция toggleText недоступна при отображении HTML-кода.

Другими словами, функция не устанавливается, пока страница не будет готова, поэтому функция onclick не ссылается ни на что.

Либо есть функция, как здесь http://jsfiddle.net/gtU56/2/

или поместите его в заголовок страницы, потому что он должен быть готов немедленно

Если вы хотите дождаться состояния ready, вы можете сделать следующее и удалить действие onclick все вместе

http://jsfiddle.net/gtU56/7/

$(".text").click(function()
{                     
   $(".text").toggle();
});
1 голос
/ 01 марта 2012

Это из-за того, как вы загружаете функцию.Переключите его с onLoad на без переноса (голова), и он отлично работает.

Пример jsFiddle

Использование onSoad в jsFiddle включает вашу функцию в вызов window.onload следующим образом:

<script type="text/javascript">
//<![CDATA[
$(window).load(function(){
function toggleText() {
$('.text').toggle();
}
});//]]> 
</script>

В то время как никакой перенос (голова) просто добавляет это как обычно:

<script type="text/javascript">
//<![CDATA[
function toggleText() {
$('.text').toggle();
}
//]]> 
</script>
1 голос
/ 01 марта 2012
toggleText = function () {
    $('.text').toggle();
}

проверьте здесь http://jsfiddle.net/gtU56/3/

0 голосов
/ 16 мая 2013

Это очень просто. Вы можете использовать ID или CLASS.

onclick="$('NAME ID or CLASS').toggle(ANIMATION or DURATION);"


<div>
    <div class="text" onclick="$('.text2').toggle(400);">Show More</div>
    <div class="text2" style="display:none">Show Less</div>
</div>
0 голосов
/ 01 марта 2012

Сначала вы должны организовать свой код jQuery следующим образом:

$.(document).ready(function() {
// enter jQuery code here
});

В противном случае вы получаете доступ к не полностью загруженному HTML-документу.

Кроме того, вам не нужен прослушиватель событий, если вы используете jQuery.

Это должно работать для вас:

$.(document).ready(function() {
   $('.text').click(function() {
      $(this).toggle();
   });
});
0 голосов
/ 01 марта 2012

Это решение - http://jsfiddle.net/gtU56/6/

Сначала необходимо убедиться, что функция зарегистрирована после загрузки страницы. Затем привяжите событие click к div.

Надеюсь, это поможет!

0 голосов
/ 01 марта 2012
$('.text').click(function() {
  $('.text').toggle('slow', function() {
    // do your animation..
  });
});

Js Fiddle

0 голосов
/ 01 марта 2012

, поскольку вы уже заявляете о наличии jquery, вам не нужно использовать встроенный JavaScript.попробуйте это

var elems = $('.text');
elems.click(function(){
  elems.toggle(); 
});

скрипка: http://jsfiddle.net/gtU56/5/

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