这段JS代码为啥会出错?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这段JS代码为啥会出错?相关的知识,希望对你有一定的参考价值。
var d1=document.getElementById('mm1').getElementsByTagName('li');
var d2=document.getElementById('mm2').getElementsByTagName('li');
var d = d1.concat(d2);
提示:d1.concat is not a function
concat 不是合并数组的吗?在同一文档中用过这个合并,没有报错啊,为什么第二处用就错,晕死了!!!
谢谢anywing2000的提醒,如果要合并的话该怎么写呢?
既然NodeList有length,可以for循环索引取值,转换成数组就很简单了。最直接的思路是这样的:
var arr = new Array();
var anchors = document.getElementsByTagName("a")
for (var i = 0; i < anchors.length; i++)
var ele = anchors[i];
arr.push(ele); //arr就是我们要的数组
先new一个Array,遍历NodeList,然后将每一个单独的元素push到数组变量里,最后操作数组变量。就是用你说的concat方法。可以参见http://www.web2bar.cn/Article/5139.aspx。 参考技术A 改好了,form应该用name属性不是id,还有setTimeout里面应该是disptime不是distime <html> <head runat="server"> <title>SetTimeout方法</title> <script
为啥这段代码会进入无限循环? [复制]
【中文标题】为啥这段代码会进入无限循环? [复制]【英文标题】:Why does this code goes into infinite loop? [duplicate]为什么这段代码会进入无限循环? [复制] 【发布时间】:2014-02-13 07:37:12 【问题描述】:考虑以下代码:
public class Game
public static void main(String[] args)
int x = 0;
while (x < 1)
x = x++;
使用我的编译器,这段代码会进入无限循环,但为什么呢?
首先,我们将 x
的值放入 x
,然后 only 然后我们将 1 添加到 x
,然后我预计 1 < 1
将是 false ,并且while 循环将终止 ...
但是不,这不会发生。
那么无限循环的原因可能是什么?
【问题讨论】:
对于调试器来说听起来像是一个很好的问题。一步一步通过它。或者在里面放一些日志语句。x=x++;
保持 x
不变 - 你增加它,然后用旧值(增加之前的值)替换它。
-1 不签出“相关”(第二个问题包含答案)
特别是当你说“首先,我们将 x 的值放入 x 中,然后才将 x 加 1”时,你似乎感到困惑。确实,从词法上讲,赋值在增量之前,但是赋值右侧的值必须在赋值发生之前计算出来。 (该值是 x 的 old 值,因为增量是 post-increment)。
【参考方案1】:
表达式x++
是一个后增量,这意味着表达式的值是旧值0
,然后将其分配回x
,因此x
始终是0
在x = x++;
之后。
要跳出无限循环,不要将其分配回x
,保持x
、1
的后增量值不变:
while (x < 1)
x++;
【讨论】:
【参考方案2】:x++
几乎等同于
some-temporary = x;
x = x + 1;
now use the value of some-temporary
所以x = x++;
等价于
some-temporary = x;
x = x + 1;
x = some-temporary;
所以你应该可以看到为什么加1的部分没有效果。
【讨论】:
【参考方案3】:这是因为x
在被使用后会增加。因此,发生的扩展操作序列将是:
oldX = x
x++
,即x = x + 1
x = oldX
oldX
是一个虚构的变量。
发生的情况是x
总是被分配oldX
,在我们的例子中是0
,导致无限循环。 x++
部分将被忽略。
解决方案:将x = x++
替换为x++
,或者,如果您真的 需要,x = ++x
。
【讨论】:
【参考方案4】:x = x++
不会做你想做的事。将其替换为x++
。
x++
等同于x = x + 1
,所以你的分配没有意义。
可以在此处的答案中找到有关此问题的更多信息:
Why does this go into an infinite loop?
【讨论】:
我就是这个意思:x = x++;
@ron 与 t = x + 1 相同; x = x;
不,@ron,你的意思是x = x + 1;
,但是你选择写它。以上是关于这段JS代码为啥会出错?的主要内容,如果未能解决你的问题,请参考以下文章
为啥这段js代码设置断点单步调试能够走通,得到结果;但取消断点直接运行就不行了?
js问题,动态增加select里的option,求问为啥这段代码不执行?求大神指教!
在Chrome上面按F12修改页面的源代码里面的JS代码为啥无法生效