2014-07-14 41 views
0

所以我试图根据选择值更改变量并在更改时显示它。我已经通过以静态方式设置变量来实现它的工作,但如果选择值被更改或增加,我不知道如何更改变量。Javascript onchange - 根据选择值更改变量

在这种情况下,我试图根据数量更改价格。如果数量大于X,则价格变为Y.请记住我是JavaScript新手,因此请保持您的答案基本。

这是我当前的代码:

HTML

<label>Single User</label> 
<select class="input-mini" name="singleuser" id="singleuser" onchange="changed(this, 0, 34.95)"> 
    <option value="0">0</option> 
    <option value="1">1</option> 
</select>&nbsp;&nbsp;<font size="4"><b>@ $34.95/mo</b></font> 

的Javascript

var size = 36; 
var cart = new Array(); 

for (var j = 0; j < size; j++) //initialize cart to all 0 
    cart[j] = 0; 

function changed(me, id, price) { 
    var amount = me.options[me.selectedIndex].value; //quantity passed 
    var t_price = amount * price; //multiply operation 
    cart[id] = t_price; //update cart array 
    update_spans(); 

    document.getElementById(id).value = amount; //update quantity for final page 
} 
function update_spans() { 
    put("cart0", cart[0]); 
} 
function put(name, price) { 
    try { 
     price = (Math.round(price * 100)/100); //round 
     price = price.toFixed(2); //two decimal places 
     document.getElementById(name).innerHTML = price; //put into span 
    } catch (err) { 
     //error 
    } 
} 
+1

查看我的回答,让我知道如果你发现它有用:) – hex494D49

+0

这不完全是我想要做的。再读一遍,我看到我解释得不好。我试图用更高的数量来改变单位价格。如果数量高于X,则单价应该变为更低的价格。数量折扣! – Arringar

+0

检查更新的答案。正如你所看到的,我添加了一个折扣数组。数组的索引保存该数量的折扣值,因此折扣[0] = 0%折扣,这意味着对于数量0,没有折扣;此外,折扣[1] = 5%,这意味着对于数量1,折扣为5%等等。当然,您可以更改这些值,并假设为数量2及以上定义折扣。在这种情况下,折扣数组看起来像这样[0,0,5,10,15,20,25] ...是否清楚:) – hex494D49

回答

1

改变你的HTML和JavaScript部分下面

// HTML 
<label>Single User</label> 
<select class="input-mini" name="singleuser" id="singleuser" onchange="changed(this, 0, 34.95)"> 
    <option value="0">0</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option>  
</select> 
&nbsp;&nbsp; 
<span id="price">@ $34.95/mo</span> 

// JavaScript (this is all you need) 
var size = 36, cart = []; 
var discount = [0, 5, 10, 15, 20, 25, 50]; 

for(var j = 0; j < size; j++) cart[j] = 0; 

function changed(me, id, price){ 
    var amount = me.options[me.selectedIndex].value; 
    var p_discount = amount * price * (discount[me.selectedIndex]/100); 
    var t_price = (amount * price) - p_discount; 
    cart[id] = t_price; 

    r_price = (Math.round(t_price*100)/100); 
    r_price = r_price.toFixed(2); 

    document.getElementById('price').innerHTML = '@ ' + r_price + '/mo'; 
} 

代码检查WOR国王jsBin

+0

这就是我所需要的。谢谢@ hex494D49 !!! – Arringar