Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的if语句只有在输入有值时才起作用?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么我的if语句只有在输入有值时才起作用?

Javascript 为什么我的if语句只有在输入有值时才起作用?,javascript,jquery,Javascript,Jquery,我正在用jQuery建立一个五星评级系统。该脚本创建五星图标。当您将鼠标悬停在其中一颗星星上时,之前的所有星星(包括悬停在上面的星星)都将亮显。单击星号时,脚本创建的隐藏输入的值将更改为该星号和该星号以及星号的编号,然后该星号将保持高亮显示,直到单击其他星号为止。当用户的鼠标离开星星的父对象时,如果先前选择了星星(基于隐藏输入的值),则这些星星将保持高亮显示。如果当用户的鼠标离开父对象时,之前没有选择星号,则所有星号将返回空。。。或者他们应该这样做 当前,当鼠标离开父对象时,星星将返回到所选内容

我正在用jQuery建立一个五星评级系统。该脚本创建五星图标。当您将鼠标悬停在其中一颗星星上时,之前的所有星星(包括悬停在上面的星星)都将亮显。单击星号时,脚本创建的隐藏输入的值将更改为该星号和该星号以及星号的编号,然后该星号将保持高亮显示,直到单击其他星号为止。当用户的鼠标离开星星的父对象时,如果先前选择了星星(基于隐藏输入的值),则这些星星将保持高亮显示。如果当用户的鼠标离开父对象时,之前没有选择星号,则所有星号将返回空。。。或者他们应该这样做

当前,当鼠标离开父对象时,星星将返回到所选内容,这正是我想要的。问题是,如果没有选择某个值(没有单击星号),星号不会返回为空。父对象的mouseleave方法中的if语句有什么问题?这是一本书。我将输入保留为文本输入,以便您可以看到值的变化

HTML:


1.
2.
3.
4.
5.
jQuery:

$element = $('.rating');
$element.each(function() {
  $element.empty();
  var hiddenInput = $('<input type="text" name="stars" id="selectedStars">');
  $element.append(hiddenInput);
  $selectedStars = $('#selectedStars').val();
  for (var i = 0; i < 5; i++) {
    var occurrence = i + 1;
    var newStar = $('<i class="fa fa-star-o" title="' + occurrence + ' stars" data-occurrence="' + occurrence + '"></i>');
    newStar.on('click', function() {
      $('#selectedStars').attr('value', $(this).data('occurrence'));
      $(this).prevAll().andSelf().removeClass('fa-star-o').addClass('fa-star');
      $(this).nextAll().removeClass('fa-star').addClass('fa-star-o');
      $element.data('selected', $(this).data('occurrence'));
      console.log($selectedStars);
    }).on('mouseover', function() {
      $(this).prevAll().andSelf().removeClass('fa-star-o').addClass('fa-star');
      $(this).nextAll().removeClass('fa-star').addClass('fa-star-o');
    });;
    $element.append(newStar);
  }
  $(this).mouseleave(function() {
    $selectedStars = $('#selectedStars').attr('value');
    if ($selectedStars != '') {
      $('i[data-occurrence="' + $selectedStars + '"]').prevAll().andSelf().removeClass('fa-star-o').addClass('fa-star');
      $('i[data-occurrence="' + $selectedStars + '"]').nextAll().removeClass('fa-star').addClass('fa-star-o');
      console.log($selectedStars);
    } else {
      //This should return all stars to empty if no value was set.
      $('i[class*="fa-star"]').removeClass('fa-star').addClass('fa-star-o');
    }
  });
});
$element=$('.rating');
$element.each(函数(){
$element.empty();
变量hiddenInput=$('');
$element.append(hiddenInput);
$selectedStars=$('#selectedStars').val();
对于(变量i=0;i<5;i++){
var发生率=i+1;
var newStar=$('');
newStar.on('click',function()){
$('#selectedStars').attr('value',$(this.data('occurrence'));
$(this).prevAll().andSelf().removeClass('fa-star-o').addClass('fa-star');
$(this).nextAll().removeClass('fa-star').addClass('fa-star-o');
$element.data('selected',$(this.data('occurrence'));
console.log($selectedStars);
}).on('mouseover',function(){
$(this).prevAll().andSelf().removeClass('fa-star-o').addClass('fa-star');
$(this).nextAll().removeClass('fa-star').addClass('fa-star-o');
});;
$element.append(newStar);
}
$(this.mouseleave(function()){
$selectedStars=$('#selectedStars').attr('value');
如果($selectedStars!=''){
$('i[data occurrence=“'+$selectedStars+'”).prevAll().andSelf().removeClass('fa-star-o').addClass('fa-star');
$('i[data occurrence=“'+$selectedStars+'”).nextAll().removeClass('fa-star').addClass('fa-star-o');
console.log($selectedStars);
}否则{
//如果未设置任何值,则应将所有星号返回为空。
$('i[class*='fa-star'])。removeClass('fa-star')。addClass('fa-star-o');
}
});
});

如果未选择任何内容,
$selectedStars
未定义的
,而不是
'
。如果你改变

if ($selectedStars != '') {

它按预期工作

if ($selectedStars != '') {
if ($selectedStars)