2017-09-26 58 views
-2

对于那些了解jQuery的人来说,这应该相当简单。简单的Javascript执行

我试图让这个脚本只在加载的页面上存在<span class="site-header__cart-indicator "></span>时才运行。

这里是不变的jQuery代码:

window.setTimeout(redirectCheckout, 2000); 

function redirectCheckout() { 
    if (!(window.location.href.includes("?1"))) { 
    window.location.href = "https://www.example.com/checkout"; 
    } 
} 

因此,这里是我的版本的代码,但它似乎并不奏效:

if (!(window.location.includes("<span class=" 
    site - header__cart - indicator "></span>"))) 
    window.setTimeout(redirectCheckout, 2000); 

function redirectCheckout() { 
    if (!(window.location.href.includes("?1"))) { 
    window.location.href = "https://www.example.com/checkout"; 
    } 
} 

谁能告诉我为什么我的代码不工作?什么是正确的代码?

+0

这里没有jQuery代码! – undefined

回答

2

要检查是否在页面存在的元素,您可以选择然后检查length属性(如果使用jQuery),或者如果它为空(如果使用纯JS):

// jQuery 
if ($('.site-header__cart-indicator').length) 
    window.setTimeout(redirectCheckout, 2000); 

// plain JS 
if (window.querySelector('.site-header__cart-indicator')) 
    window.setTimeout(redirectCheckout, 2000); 
+0

只是添加了POJS版本:) –

+0

即使您使用jQuery,它仍然是普通的旧JavaScript,对吗? :-)不同之处在于你是使用jQuery还是使用DOM,与你正在编写的*语言无关...... –

+1

当然,我的意思是'纯JS',意思是没有涉及到框架。 –

1

那么,对于一件事你有一个引用错误:

"<span class="site-header__cart-indicator"></span>" 

应该是:

'<span class="site-header__cart-indicator"></span>' 

但更多的点,这种情况是没有意义的。该字符串永远不会位于位置(当前URL)。在页面上将是

尽管您的代码目前没有jQuery,但您确实需要使用它。在这种情况下,您可以选择该元素并查看是否有任何匹配。类似这样的:

if ($('span.site-header__cart-indicator').length > 0) 
+0

下一次,请将该问题作为明显的重复结束,而不是回答此概念的另一个副本。 – Cerbrus