2012-02-06 68 views
0

所以即时在bigcartel上创建一个商店,我想添加一个免费的交付选项。但他们目前不允许你将它添加到spercific国家。我目前正在添加编码来显示一个div,或者在用户总数超过85英镑时提醒用户,他们选择英国作为他们的目标。在字段值上创建一个无限循环

ATM我认为我的代码不会循环..以及它似乎不是:/ 我需要它循环,以便它在客户添加或减少项目时检查总价格的值.. whicvh会+或 - 总金额。

我有

var amount = {{ cart.total }} ; 
var country = {{ store.country | country_select }}; 

t=setTimeout("checkprice()",10); 

function checkprice() 
    { 
if(amount >= 85 || country = 45) 
{ 
    alert('OVER 85!') ; 

    } 
    else 
    { 
alert('monkeys') 
    } 
} 

编辑! 08 /月/ 12

的建议通过@kolink:我想出了这个,,,

//----get variables-- 
var amount = {{ cart.total }}; 
var moose = document.getElementById("country"); 

    function freedel() 
    { 
     if (moose = 42 || amount >= 85) 
    { 
     document.getElementById("moose").style.visibility='visible';  
    } 
      else 
    { 
     alert('WRONG!') 
     } 
     } 

的HTML之中:

 <div id="moose" style="visibility:hidden;"> dfgsdgfdsg</div> 

<h3 id="cart_price" onChange="freedel()">{{ cart.total | money_with_sign }}</h3> 
+3

你是对的,它不会循环 - 在代码中没有任何循环 – 2012-02-06 19:24:06

+1

为什么不直接设置它检查每当用户增加或减少任何东西,而不是试图循环 – Henesnarfel 2012-02-06 19:25:51

+0

不仅如此,但它的功能,你必须每次更新购物车总数或国家变化时调用它 – zero 2012-02-06 19:29:15

回答

1

你告诉它检查页面加载后10毫秒的价格,然后你永远不会告诉它再次运行。

如果你的代码工作,它会显示警报,然后又一个10毫秒后(这是没有足够的时间来解决问题)。

您应该做的是将checkprice();添加到您的代码中,无论您更新cart.totalstore.country。也许一个onChange事件可以帮助你。

作为一个方面说明,永远不要使用setTimeout中的字符串。通过函数本身(即setTimeout(checkprice,10);)或一个匿名函数(setTimeout(function() {checkprice();},10);)代替

+0

我目前已将此.. '// ----获取变量 - var amount = {{cart.total}}; var moose = document.getElementById(“country”); 功能freedel() { 如果(驼鹿= 42 ||金额> = 85){ 的document.getElementById( “驼鹿”)style.visibility = '可见的'。 } 其他 { 警报( '错了!') } }' 检查上面的代码休息 – 2012-02-07 08:41:28