首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >循环遍历select选项的javascript选项

循环遍历select选项的javascript选项
EN

Stack Overflow用户
提问于 2018-10-13 05:39:44
回答 1查看 264关注 0票数 0

最近,我偷了一些javascript来选择select元素中的一个选项:

代码语言:javascript
复制
    var el=document.getElementById('mySelect');
    var opts=el.options;
    for (var opt, j = 0; opt = opts[j]; j++) {
        if (opt.value == 'Apple') {
          el.selectedIndex = j;
          break;
      }
    }

它工作得很好,但当我看着它时,我意识到它与我原本要写的东西不同:

代码语言:javascript
复制
    var el=document.getElementById('mySelect');
    for (var j = 0; j < el.options.length; j++) {
        if (el.options[j].value == 'Apple') {
          el.selectedIndex = j;
          break;
      }
    }

在查看第一个代码时,如果找不到'Apple‘,什么会停止循环?哪一个“更好”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-13 05:49:13

在这两种情况下,第二个表达式确定循环是应该继续还是应该停止。在你的世界里,

代码语言:javascript
复制
for (var j = 0; j < el.options.length; j++) {}

这很简单,j会递增,只要j小于选项的长度,它就是真的,在某个点上它等于长度,然后它就会停止。在另一个中,

代码语言:javascript
复制
for (var opt, j = 0; opt = opts[j]; j++) {}

不同之处在于,它们声明了一个变量opt,并在第二个表达式中将其设置为(也是递增的)数组索引。在某种程度上,j超出了数组的界限,而opts[j]就是undefined。由于JS中的等式表达式是正确站点的值,因此该表达式也是undefined,这是错误的,循环将停止。

至于哪一个更好呢?这两种方法都有效。但是,当你不得不挠头并想知道其中的一个时,你有多想依赖更难读的代码呢?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52787323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档