如图,一个产品有多组属性,每组的每个属性,价格都不同,是否加价或减价,写入 title 标签里面。
点击事件时,获取当前属性价格并作计算,改动要变动的价格。每个属性有加价,也有减价。当有一组属性时,还好操作
有多组属性时,就想不出来怎么实现。下面的代码只完成部分功能,不能全部实现随便任意选择作出正确的运算,希望向大家求助一个思路,或js代码? 谢谢。
var num_base = 0;
function changeAtt(t) {
var objsped = document.getElementById('productPriceDiscount');
var stradd = t.getAttribute('title');
var newp = 0;
if(stradd != ''){
var newp = parseFloat(stradd.replace(/[^\d\.\d]/ig,''));
}
if(objsped){
var objnormal = document.getElementById('normalprice');
var objspe = document.getElementById('productSpecialPrice');
var num_normal = parseFloat(objnormal.getAttribute('price').replace(/[^\d\.\d]/ig,''));
var num_spe = parseFloat(objspe.getAttribute('price').replace(/[^\d\.\d]/ig,''));
objnormal.innerHTML = objnormal.innerHTML.replace(/\d+.\d+/ig,(num_normal+newp).toFixed(2));
objspe.innerHTML = objspe.innerHTML.replace(/\d+.\d+/ig,(num_spe+newp).toFixed(2));
}else{
var objprice = document.getElementById('productPrices');
var strprice = objprice.innerHTML;
if(num_base==0){
num_base = parseFloat(strprice.replace(/[^\d\.\d]/ig,''));
}
objprice.innerHTML = strprice.replace(/\d+.\d+/ig,(num_base+newp).toFixed(2));
}

解决方案 »

  1.   

    给每个DOM都加上一个自定义属性,记录其值,比如
    <div data-val="-10">..</div> 表示负10
    然后 点击DOM时,根据其值来计算
      

  2.   

    已经自定义了 price 属性,关键是每个分组属性点击后怎么计算出正确的价格来。针对一个组的属性我开了一个全局变量 num_base 来记录默认价格。那么分组多的时候,谁知道要开几个全局变量??
      

  3.   

    <script type="text/javascript">
    var a={
    a1:100,
    a2:1000,
    a3:10000
    }
    var b={
    b1:1,
    b2:2
    }
    function change(){
    var a=prompt("new price");
    a=parseFloat(a)
    if(a){
    var b=this.innerHTML.split(":");
    this.innerHTML=b[0]+":"+(parseFloat(b[1])+a);
    }
    }
    window.onload=function(){
    for(var i in a){
    var div=document.createElement("div");
    div.innerHTML=i+":"+a[i];
    div.style.width="100px";
    div.style.backgroundColor="red";
    div.onclick=change;
    document.body.appendChild(div);
    }
    for(var i in b){
    var div=document.createElement("div");
    div.innerHTML=i+":"+b[i];
    div.style.backgroundColor="blue";
    div.style.width="100px";
    div.onclick=change;
    document.body.appendChild(div);
    }
    }
    </script>
    类似于这样??不明白你的意思啊
      

  4.   

    每类属性组都编上组号。
    目前是white变量组和watt变量组
    用一个变量保存原始价格。
    在选中任何一个变量组时的某个元素属性时,检查两个变量组处于选中状态的变量,并返回选中状态变量的值与原始价格进行算术运算。