如图,一个产品有多组属性,每组的每个属性,价格都不同,是否加价或减价,写入 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));
}
<div data-val="-10">..</div> 表示负10
然后 点击DOM时,根据其值来计算
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>
类似于这样??不明白你的意思啊
目前是white变量组和watt变量组
用一个变量保存原始价格。
在选中任何一个变量组时的某个元素属性时,检查两个变量组处于选中状态的变量,并返回选中状态变量的值与原始价格进行算术运算。