V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
imn1
V2EX  ›  JavaScript

一个坑,坑了半天时间

  •  
  •   imn1 · 2017-04-05 15:05:44 +08:00 · 3211 次点击
    这是一个创建于 2800 天前的主题,其中的信息可能已经有所发展或是发生改变。
    firefox 写个 UC 脚本方便阅读车牌
    for (i in list) {
    for (j in nodes) { }
    }

    i 总是只跑一遍就结束,第二个值开始总是无效
    然后研究了半天
    改成
    for (j=0; j<nodes.length; j++) 就跑通了
    但是刚开始时改 i 不改 j 也不通,坑我忽略了要改内循环这点
    14 条回复    2017-04-06 12:42:51 +08:00
    noe132
        1
    noe132  
       2017-04-05 15:12:00 +08:00
    不知所云
    dianliang01
        2
    dianliang01  
       2017-04-05 15:39:47 +08:00
    没明白
    imn1
        3
    imn1  
    OP
       2017-04-05 15:56:54 +08:00
    @noe132
    @dianliang01
    1.内、外循环都用 for...in ,跑不通
    2.外循环 for.. 内循环 for...in ,也跑不通
    3.外循环 for..in 内循环 for...,可以跑通

    开始时按 2 改了,不通,就以为不是循环问题,去测试其他语句问题了,没想到几个小时后改成 3 ,就通了……
    loy6491
        4
    loy6491  
       2017-04-05 16:06:33 +08:00
    for...in 本来就不出处理数组的,你自己乱写怪谁..
    tieshu
        5
    tieshu  
       2017-04-05 16:08:14 +08:00
    for of
    vghdjgh
        6
    vghdjgh  
       2017-04-05 16:13:26 +08:00
    处理数组用 for...of ,处理 object 用 for...in ,不要乱用,会坑死自己的。
    imn1
        7
    imn1  
    OP
       2017-04-05 17:16:05 +08:00
    @loy6491
    @vghdjgh
    非职业水平,脚本只写给自己用的,多多包容

    之前都想过这个, list 是 json 的列表, nodes 是 getElements ,查错时用 typeof 看过两个都是 obj
    sun522198558
        8
    sun522198558  
       2017-04-05 17:19:34 +08:00
    可怕的头像
    Eoss
        9
    Eoss  
       2017-04-05 17:20:03 +08:00 via iPhone
    @imn1 typeof [] 试试。不要太相信 typeof 。
    shmilypeter
        10
    shmilypeter  
       2017-04-05 23:12:08 +08:00
    想要写点什么才发现 V2EX 连个富文本编辑器,连 syntax highlighter 都没有
    Phariel
        11
    Phariel  
       2017-04-06 01:37:33 +08:00
    @imn1 #7 请使用 instanceof
    Martox
        12
    Martox  
       2017-04-06 08:29:54 +08:00 via Android
    @imn1 请用 Object.prototype.toString.call()方法来判断。
    xman99
        13
    xman99  
       2017-04-06 09:13:22 +08:00
    phper 路过, 楼上说的有点高级, 我们一般只用 each 和 普通 for
    chuxiaonan
        14
    chuxiaonan  
       2017-04-06 12:42:51 +08:00
    通过 DOM API 得到的一般是个 NodeList ,提供了一个 forEach 方法可以用来迭代
    ```javascript
    document.querySelectorAll(...).forEach(callback)
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1030 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:36 · PVG 03:36 · LAX 11:36 · JFK 14:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.