【问题标题】:Simple conditional for handling the Tags (JQuery , javascript)处理标签的简单条件(JQuery,javascript)
【发布时间】:2021-02-08 15:43:52
【问题描述】:

我想写一个条件来处理标签。

$("#btn").click(function() {
  setInterval(function() {
    var number = 1 + Math.floor(Math.random() * 9 + Math.random() * 100);
    $('#div2').html(number);
    var $div3 = $("#div3");
    if (number > 50) {
      var span1 = $('<span />').addClass('yes').text('YES');
      span1.appendTo($div3);
      checkSpan(span1);
    } else {
      var span2 = $('<span />').addClass('no').text(' NO');
      span2.appendTo($div3);
    }
  }, 1000);
});

function checkSpan($span) {
  if ($span.prevUntil('.no', '.yes').length === 2) {
    [].forEach.call(document.querySelectorAll('.yes'), function(e) {
      e.parentNode.removeChild(e);
    });
    [].forEach.call(document.querySelectorAll('.no'), function(e) {
      e.parentNode.removeChild(e);
    });
    var Reset = $('<span />').addClass('reset').text("RESET");
    Reset.appendTo($("#div3"));
  }
}
.yes,
.no,
.reset {
  display: inline-block;
  padding: 5px;
  text-align: center;
  margin: 1px;
}

.yes {
  background-color: green;
  color: white;
}

.no {
  background-color: red;
}

.reset {
  background-color: #5f79ff;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="div1" style="background-color: #cce1ee;text-align: center;width: 500px;height: 500px;margin: 0 auto;">
  <input id="btn" value="click" type="button" style="' + 'text-align: center;width: 50px" />
  <div id="div2"></div>
  <div id="div3"></div>
</div>

在这里,我们看到 (3 &lt;span class="yes"&gt;YES&lt;/span&gt;) 之后,所有带有 .yes.no 类的 spans 标签都将被删除 并创建了这个&lt;span class="reset"&gt;RESET&lt;/span&gt;

现在我想要一个条件 => 如果在 &lt;span class="reset"&gt;RESET&lt;/span&gt; 之后有 &lt;span class="yes"&gt;YES&lt;/span&gt; 吗? 如是? 所以警报(“重置后有类是跨度标签”) 别的 { alert(“Reset 后没有带有 yes 类的 span 标签”) }

例子:

如果

<span class="reset">Reset</span>
<span class="yes">YES</span>

做事....

【问题讨论】:

标签: javascript jquery tags


【解决方案1】:

如果我明白你想要什么:

$("#btn").click(function() {
  var nbyes = 0;
  setInterval(function() {
    var number = 1 + Math.floor(Math.random() * 9 + Math.random() * 100);
    $('#div2').html(number);
    var $div3 = $("#div3");
    if (number > 50) {
      if(nbyes == 3){
         nbyes = 0;
         alert("there is span tag with class yes after Reset");
      }
      var span1 = $('<span />').addClass('yes').text('YES');
      span1.appendTo($div3);
      nbyes++;
      if(nbyes == 3){
         checkSpan();
      }
    } else {
      if(nbyes == 3){
         nbyes = 0;
         alert("there is no span tag with class yes after Reset");
      }    
      var span2 = $('<span />').addClass('no').text(' NO');
      span2.appendTo($div3);
    }
  }, 1000);
});

function checkSpan($span) {
  $(".yes, .no").remove(); 
  var Reset = $('<span />').addClass('reset').text("RESET");
  Reset.appendTo($("#div3"));
}
.yes,
.no,
.reset {
  display: inline-block;
  padding: 5px;
  text-align: center;
  margin: 1px;
}

.yes {
  background-color: green;
  color: white;
}

.no {
  background-color: red;
}

.reset {
  background-color: #5f79ff;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="div1" style="background-color: #cce1ee;text-align: center;width: 500px;height: 500px;margin: 0 auto;">
  <input id="btn" value="click" type="button" style="' + 'text-align: center;width: 50px" />
  <div id="div2"></div>
  <div id="div3"></div>
</div>

【讨论】:

  • 为什么?你能解释一下吗
  • 我不确定进程是否被阻止..我认为您必须中止设置超时并在之后重新启动
  • 这是真的,如果创建了 2 个或更多 (.yes) 类,如何设置 if after class (.reset)。做点什么……
  • 所以你可以中止设置超时并在需要时重新启动
  • 它并不复杂,但你必须改变你的程序的逻辑。它不是同一个问题。所以我建议你问一个新问题
猜你喜欢
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
相关资源
最近更新 更多