0

我刚开始使用 YUI,我想我对如何打破 NodeList .some() 方法中的循环感到困惑。

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

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

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

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

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

 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.');
        }
     });
});
4

1 回答 1

2

some() 行为正确。您的匿名函数看到的第一个元素是“文本 1”,它与 targetText 不匹配,因此函数输出到控制台并继续循环。在下一次迭代中,您的条件匹配并从循环中“返回真”中断。

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

于 2013-08-04T05:09:06.907 回答