YUI 3:如何打破NodeList .some()循环?

时间:2013-08-04 02:21:00

标签: javascript yui yui3

我刚开始使用YUI,我觉得我对如何摆脱NodeList .some()方法中的循环感到困惑。

http://yuilibrary.com/yui/docs/api/classes/NodeList.html#method_some

它在API文档中说,该函数需要返回true。

我有一个带有两个选项的select标签:

 <select id="carrier">
  <option value="1">Text 1</option>
  <option value="2">Another Text 2</option>
 </select>

我正在尝试循环选项,直到选项文本与文本匹配,我正在寻找。我认为这是使回调函数返回true的方法。但是,当我运行它时,我一直在else分支中看到console.log()。所以,我认为我并没有在适当的地方回归,但我不确定我该做什么。

 YUI().use('node', function(Y) {
     var targetText = 'Another Text 2';

     Y.one('#carrier').get('options').some(function(currentNode, index, NodeList) {

        if (currentNode.get('text') === targetText) {
          return true;
        } else {
          console.log('Should NOT see this.');
        }
     });
});

1 个答案:

答案 0 :(得分:2)

some()表现正常。匿名函数看到的第一个元素是“Text 1”,它与targetText不匹配,因此函数输出到控制台并继续循环。在下一次迭代中,您的条件匹配并且'return true'从循环中断。

如果您编辑HTML并反转选项元素的顺序,您将看到您期望的行为。