Мне нужно проверить, есть ли у div с именем «ContainterTwo» изображение с добавленным к нему классом «hd» или «tl», но мой блок if else никогда не выполняется. Изображения представляют собой теги html img внутри массива под названием «изображение». Я использую генератор случайных чисел, чтобы стимулировать подбрасывание монеты.
$(document).ready(function(){
var image = ['<img src="heads.jpg" class="hd" height="50" width="50">', '<img src="tails.jpg" class="tl" height="50" width="50">'];
$('#flip').on('click', function(){
var heads = 0;
var tails = 0;
var numToFlip = parseInt($('#number').val().trim());
for(var x = 0; x < numToFlip; x++)
{
var ran = Math.round(Math.random() * (1)) + 0;
$('.ContainerTwo').append(image[ran]);
if($('.ContainerTwo').hasClass('hd'))
{
heads++;
$('.spOne').html(heads);
$('.ContainerTwo').empty();
}
else if($('.ContainerTwo').hasClass('tl'))
{
tails++;
$('spTwo').html(tails);
$('.ContainerTwo').empty();
}
}
})
})
3 ответа
Попробуй это,
if($('.ContainerTwo').find('img').hasClass('hd'))
{
heads++;
$('.spOne').html(heads);
$('.ContainerTwo').empty();
}
else if($('.ContainerTwo').find('img').hasClass('tl'))
{
tails++;
$('spTwo').html(tails);
$('.ContainerTwo').empty();
}
Вы можете проверить случайное значение переменной ran
.
Я добавил некоторый рефакторинг кода и удалил ненужные переменные и переместил объявления переменных jQuery из цикла для повышения производительности.
Код:
$(document).ready(function () {
$('#flip').on('click', function () {
var heads = 0,
tails = 0,
numToFlip = parseInt($('#number').val().trim()),
$spOne = $('.spOne'),
$spTwo = $('spTwo');
for (var x = 0; x < numToFlip; x++) {
var ran = Math.round(Math.random() * (1)) + 0;
(ran === 0) ? $spOne.html(++heads): $spTwo.html(++tails);
}
});
});
Обратите внимание, что была удалена переменная image
, потому что вы делаете: $('.ContainerTwo').append(image[ran]);
, а после этого вы делаете $('.ContainerTwo').empty();
if (ran === 0) ... else ...
- не нужно else if
- у вас есть голова или хвост, проверьте одно, если не то, то другое
$containerTwo.append(image[ran]);
и два $containerTwo.empty();
... лишние: p
$containerTwo.empty();
У меня были сомнения, потому что цикл повторяется до номера переменной numToFlip
Вы можете проверить, существует ли несколько классов, с помощью функции is()
. Вы можете проверить весь свой класс .ContainerTwo
с помощью each()
и сравнить со своей собственной переменной. Попробуйте ниже
var containerTwo = $('.ContainerTwo img'); //All img in your element
containerTwo.each(function(i,e){ //Check all img in all containerTwo element in page
if($(this).is('.hd, .tl')){ // If .hd or tl found
console.log($(this).attr("class"))
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="ContainerTwo">
<img class="hd" src="http://img.freepik.com/icones-gratuites/instagram-logo_318-84939.jpg?size=338c&ext=jpg"/>
<img class="tl" src="http://img.freepik.com/icones-gratuites/facebook-logo-bouton_318-84980.jpg?size=338c&ext=jpg"/>
<div>
<div class="ContainerTwo">
<img class="hd" src="http://img.freepik.com/icones-gratuites/instagram-logo_318-84939.jpg?size=338c&ext=jpg"/>
<img class="tl" src="http://img.freepik.com/icones-gratuites/facebook-logo-bouton_318-84980.jpg?size=338c&ext=jpg"/>
<div>
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.
$('.ContainerTwo').find('img').hasClass('hd')
или$('.ContainerTwo').find('img').hasClass('tl')
найдите класс в img, а не в divif( ran === 0 ) { ... } else { ... }
Math.round(Math.random() * (1)) + 0;
это простоMath.round(Math.random());
$(image[ran])
тоже правильно. В этом случае вам не нужен.ContainerTwo
, потому что вы очищаете его сразу после добавления изображения внутрь.