在Firefox中使用javascript时出错

时间:2011-01-27 18:43:31

标签: javascript html undefined

我在Firefox中运行JavaScript时遇到问题。下面的脚本在除Firefox之外的其他浏览器中运行没有问题。

var vars = [], hash;
                var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

                for(var i = 0; i < hashes.length; i++)
                {
                    hash = hashes[i].split('=');
                    vars.push(hash[0]);
                    vars[hash[i]] = hash[1];
                }
                if (vars[0] != ' ')
                {
                    document.all['companyURL'].innerHTML = vars[0];
                    document.getElementById('domain').value = vars[0];
                }

因此,此代码在页面加载期间运行,并且应该在URL之后获取值,并使用URL中的任何内容替换页面中的一行文本。

这是需要替换的文本行(yourcompany.com):

<h1><a href="" id="companyURL" name="companyURL">yourcompany.com</a> is available.<img src="images/checkmark_64.png" alt="check image"></h1>

因此,如果网址是“google.com?hello.com”,那么页面中的文字需要从“yourcompany.com”更改为“hello.com”,但是当页面加载到Firefox时,它会给出我错误“ document.all is undefined ”并指向包含此代码的代码行。

document.all['companyURL'].innerHTML = vars[0]; 

我不知道为什么会这样,我在网上找不到任何可以帮助我解决问题的信息。请帮忙!

谢谢!

3 个答案:

答案 0 :(得分:7)

取代:

document.all['companyURL'].innerHTML = vars[0];

使用:

document.getElementById('companyURL').innerHTML = vars[0];

答案 1 :(得分:6)

mozilla / FF

不支持

document.all

你可以在那里使用document.getElementById("companyURL")

答案 2 :(得分:1)

document.all是一个旧的IE4标准。您应该使用document.getElementById()

我建议你利用一个常见的javascript库来抽象不同的浏览器实现。