【问题标题】:Javascript - Endless recursive functionJavascript - 无尽的递归函数
【发布时间】:2013-06-08 06:47:39
【问题描述】:

我目前正在开发一个 chrome 扩展程序,该扩展程序允许用户单击节点以获取其内容。使用textContent获取内部文字很简单,但是在点击的div中获取图片的url...

我尝试使用此函数获取img 节点,从而能够读取其href/src

function getimgtag(elem) //elem is the clicked div
{
    for(i=0;elem.getElementsByTagName('div')[i];i++)
    {
        getimgtag(elem.getElementsByTagName('div')[i]);
    }
    if(elem.getElementsByTagName('img')[0])
    {
        localStorage['fus_imgtag']=elem.getElementsByTagName('img')[0];
    }   

}

但它似乎没有尽头,我真的不明白为什么。它不应该检查所有div 元素并将最后一个img 放在localStorage['fus_imgtag'] 中吗?

【问题讨论】:

  • 你忘记像var i一样声明i
  • 这不是问题,但我会缓存elem.getElementsByTagName('div')elem.getElementsByTagName('img')。一遍又一遍地调用它是在浪费资源。
  • @elclanrs:这就是答案:)
  • @elclanrs 是的,就是这样。真丢人。谢谢!
  • 很高兴它有帮助,我会发布作为答案。

标签: javascript google-chrome dom recursion


【解决方案1】:

您忘记像var i 一样声明i。如果你不声明它,它就会变成一个隐式全局变量,这总是很麻烦,特别是在你的情况下,i 应该为每个递归调用在本地范围内。

【讨论】:

    猜你喜欢
    • 2022-01-07
    • 2011-12-31
    • 2022-01-18
    • 2021-02-19
    • 2017-03-15
    • 1970-01-01
    • 2013-03-28
    • 2012-05-29
    相关资源
    最近更新 更多