Javascript无法找到DOM的任何部分

时间:2014-05-08 16:52:13

标签: javascript jquery dom typo3

我注意到我正在帮助一位朋友的网站上有一个有趣的问题。当我在主页上时,我可以使用javascript / jQuery按预期访问DOM,一切正常。如果我使用控制台并输入console.log($(' html'));它按预期从站点返回html对象。

但是,如果我在索引以外的任何页面上执行完全相同的操作,则返回null。页面的来源看起来是一样的,我可以看到那里的所有元素,但是javascript本身似乎并不知道它们。

该网站是使用Typo3 CMS构建的,如果它可能是其中的一部分。

有没有人有这方面的经验?或者有没有办法告诉javascript在整页加载后重新读取DOM?

编辑有人要求提供该网站的链接,所以这里是:http://www.stinglonline.de/

4 个答案:

答案 0 :(得分:3)

jquery和prototype之间存在冲突。 添加var $j = jQuery.noConflict();行中的内容,然后在该页面上更新您的jquery以使用新的$j变量$j("html"),它应该适合您。请参阅:http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/

我在控制台中对http://www.stinglonline.de/haupt-menue/stingl-gmbh/profil.html进行了测试。

或者,您可以使用jQuery代替$,无论哪种方式最适合您。

答案 1 :(得分:1)

看起来只有主页正在运行jQuery。
如果您使用本机Javascript从DOM中进行选择,它就可以正常工作。

试一试:

document.getElementsByTagName('html');

在Javascript中做同样的事情$(' html');在jQuery中。 有几个Notes and things to consider使用这种原生Javascript方法。

我发现jQuery非常有用,但如果没有正确理解本机Javascript,它就会成为一个拐杖。

修改 scrappedcola's Answer is correct当我查看时,我错过了代码中的jQuery标记。

答案 2 :(得分:1)

看来$http://www.stinglonline.de/top-menue/home.html上的jquery库的一部分

但是$是每个其他页面上Prototype库的一部分。

您在主页上没有此问题,因为您没有在那里使用原型。

您应该在声明jquery库之前声明原型库。

答案 3 :(得分:0)

在主页中,输入$ in console(Chrome)。它使用jquery。 所以$('html')返回document.getElementsByTagName('html')。

>$
function (a,b){return new m.fn.init(a,b)}   jquery.js?1399526417:2

在其他页面中,键入$ in console(Chrome)。它使用原型。 所以$('html')返回document.getElementById('html'), $('skiplinks')返回document.getElementById('skiplinks')。

>$
function $(b){
    if(arguments.length>1){
        for(var a=0,d=[],c=arguments.length;a<c;a++){
            d.push($(arguments[a]))
        }
        return d
    }
    if(Object.isString(b)){
        b=document.getElementById(b)
    }
    return Element.extend(b)
} 
prototype.1.7.0.yui.js:1

$('skiplinks')
<ul id=​"skiplinks">​…​</ul>​