Div编号检查和setInterval不能正常工作

时间:2018-02-01 10:54:12

标签: javascript jquery

我使用以下脚本来检查div的编号是否实际匹配。但是脚本失败了。也许我必须转换jQuery的数量? jQuery不能将 var document = new HtmlDocument(); document.LoadHtml(firsturlpagesource); var cssTags = document.DocumentNode.SelectNodes("//link"); if (cssTags != null) { urlcsscountlbl.Text = ""; //numbers of css urlcssdetailslbl.Text = ""; // url of css files int count = 0; foreach (var sitetag in cssTags) { if (sitetag.Attributes["href"] != null && sitetag.Attributes["href"].Value.Contains(".css")) { count++; firsturlcssdetailslbl.Text += sitetag.Attributes["href"].Value + "<br />"; } } urlcsscountlbl.Text = count.ToString(); } 理解为数字吗?

"2.3"
var Test = setInterval(TestMethod, 4000);

function TestMethod() {
  if ($(".result").not(':contains("2.3")')) {
    console.log("field not contains 2.3");
    clearInterval(Test);
  } else {
    console.log("field contains 2.3");
    clearInterval(Test);
  }
}

我的小提琴: Example

2 个答案:

答案 0 :(得分:3)

问题是因为您的逻辑在if条件下使用jQuery对象。选择器总是返回一个对象,即使它没有匹配DOM中的任何元素,因此在你的条件下被强制转换为true - 因此问题。

要解决此问题,您需要修改逻辑以检查返回对象的length以查看它匹配的元素数量:

&#13;
&#13;
var Test = setInterval(TestMethod, 4000);

function TestMethod() {
  if ($('.result:contains("2.3")').length == 0) {
    console.log("field not contains 2.3");
    clearInterval(Test);
  } else {
    console.log("field contains 2.3");
    clearInterval(Test);
  }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="result">
  2.3
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

请尝试长度并检查它是否不等于0

    var Test = setInterval(TestMethod, 4000);

function TestMethod() {

        if($(".result").not(':contains(2.3)').length != 0) {
      alert("field not contains 2.3");
      clearInterval(Test);
        }

        else {
            alert("field contains 2.3");
      clearInterval(Test);
        }

}

您可以查看here