indexof()没有选择第一个字符串实例

时间:2016-09-02 03:13:39

标签: javascript select html-select indexof

一直试图解决这个问题一段时间了,我似乎无法做到这一点。

我有这个用于casperjs

    var size = this.evaluate(function () {
    var  number = 10;

            var size;
            $('select[name="placeholder"] option[name="plId"]')
                .each(function (index, dom) {
                    var currentsize = $(dom).attr('value');
                    if (String(currentsize).indexOf(
                        String(number)) > -1) {
                        size = currentsize;
                    }
                });
            return size;
        });

我试图从值

中选择10
<option name="plId" value="25437456:10" data-label="(10)">10</option>
<option name="plId" value="53467763:10.5" data-label="(10.5)">10.5</option>

但由于某种原因,每次选择10.5时,应选择10。

任何人都知道什么是错的?感谢帮助。

1 个答案:

答案 0 :(得分:3)

.each()循环处理每个元素。因此,size变量最终将成为匹配而不是第一个的 last 项目。

您可以通过从传递给false的函数中返回.each(),在匹配后立即停止循环。

var size = this.evaluate(function() {
      var number = 10;

      var size;
      $('select[name="placeholder"] option[name="plId"]')
        .each(function(index, dom) {
          var currentsize = $(dom).attr('value');
          if (String(currentsize).indexOf(
            String(number)) > -1) {
            size = currentsize;
            return false;  // <--- ADD THIS
          }
        });
      return size;
    });