09. juli 2009 - 13:13Der er
17 kommentarer og 1 løsning
Tælle hvor meget der er i indkøbskurven.
Hej Eksperter!
Jeg vil gerne lave en lille funktionalitet til mit site. Når man har smidt ting i kurven så skal den tælle hvor meget der er i kurven f.eks 200 kr, og da udskrive et andet sted på siden "du mangler endnu 300% for at få rabat"
Jeg tænker at javascript er det nemmeste?
Nogle ideer til, hvordan jeg gør dette, eller har eksempler/links?
ok, det finder jeg lige ud af og smider noget kode. Men det er faktisk lige meget om det er en kurv eller hvad det er.
hvis vi siger jeg har en div med et tal. Så er det noget i stil med getElementById eller hvordan det nu skrives i Java? finde tallet og sammenligne det med f.eks 500 og så skrive hvor langt der er til 500. og skrive det tal ud.
<script type="text/javascript"> var find = /DKK/; var myDiv = document.getElementById('dindiv'); var myTextNode = myDiv.firstChild; var myText = myTextNode.data; var matchPos1 = myText.search(find);
if(matchPos1 != -1){ var value = myText.substr(0,matchPos-5); alert('VÆRDI: '+value); } </script>
function getValue(){ var tds = document.getElementsByTagName('td'); var size = tds.length; for(var i=0; i<size;i++){ if(tds[i].getAttribute('class')=='Amount_Basket' || tds[i].getAttribute('className')=='Amount_Basket'){ var find = /DKK/; var myTextNode = tds[i].firstChild; var myText = myTextNode.data; var matchPos1 = myText.search(find);
if(matchPos1 != -1){ var value = myText.substr(0,matchPos1-4); alert('VÆRDI: '+value); } } } }
Helt i orden! Ordnede det på en lidt anden måde :o)
var myDiv = document.getElementById('ShopLayOut_Basket_TD'); var myText = myDiv .innerHTML; // henter hele HTML for ID="ShopLayOut_Basket_TD" var startPos = myText.indexOf('Amount_Basket')+26;// start value af total sum i kurven. var basketValue = myText.substr(startPos, 5); var findKomma = basketValue.indexOf(',');
if(findKomma == 1) // 0 { var value = myText.substr(startPos, 2); var value_final1 = 595 - value; document.getElementById("rabat").innerHTML ="Få 5% rabat, hvis du køber for yderligere 595,00 DKK"; } else if(findKomma == 2) // 10 - 99 { var value = myText.substr(startPos, 2); var value_final2 = 595 - value; document.getElementById("rabat").innerHTML ="Få 5% rabat, hvis du køber for yderligere "+value_final2+",00 DKK"; } else if(findKomma == 3) // 100 - 999 { var value = myText.substr(startPos, 3);
if(value<=595) { var value_final3 = 595 - value; document.getElementById("rabat").innerHTML ="Få 5% rabat, hvis du køber for yderligere "+value_final3+",00 DKK"; } else { if(value<=1095) { var value = myText.substr(startPos, 5); var basketValue1 = basketValue.replace(/[.]/gi,""); var value_final3 = 1095 - basketValue1; document.getElementById("rabat").innerHTML ="Få 10% rabat, hvis du køber for yderligere "+value_final3+",00 DKK"; } else { document.getElementById("rabat").innerHTML ="Du har købt for "+basketValue1+",00 DKK. Vi giver dig derfor gratis fragt! Mvh Stylee"; }
} }
else { document.getElementById(rabat).innerHTML ="'Fejl, Administrator er underettet! Mvh Stylee.dk'"; }
Der er dog et problem at ligeså snart at værdien overstiger 1000 så får jeg en tom værdi fra: var basketValue1 = basketValue.replace(/[.]/gi,"");
Jeg tror i hvertfald det er den som ikke kan give mig et ordentligt tal. taller er 1.000 og jeg vil have det i 1000, kan du evt. hjælpe der :o) Der er selvfølgelig masser af point, vi opretter bare en ny tråd og giver dig point der!
Din kode virkede i øvrigt også fint med lidt tilpasning!
jamen det er fordi at jeg skal bruge, så længe værdien er under 595 skal den skrive et, og så længe den er over 595 men under 1095 skal den skrive noget andet og ligeså snart at værdien overstiger 1095 skal den skrive noget tredje. Jeg kan dog bare ikke få det sidste til at lykkedes.
function getValue(){ var tds = document.getElementsByTagName('td'); var size = tds.length; for(var i=0; i<size;i++){ if(tds[i].getAttribute('class')=='Amount_Basket' || tds[i].getAttribute('className')=='Amount_Basket'){ var find = /DKK/; var myTextNode = tds[i].firstChild; var myText = myTextNode.data; var matchPos1 = myText.search(find);
if(matchPos1 != -1){ var value = myText.substr(0,matchPos1-4); //alert('VÆRDI: '+value);
if(value<=595){ var value_final = 595 - value; document.getElementById("rabat").innerHTML ="Få 5% rabat, hvis du køber for yderligere "+value_final+",00 DKK"; }else if(value<=1095){ var value_final = 1095 - value; document.getElementById("rabat").innerHTML ="Få 10% rabat, hvis du køber for yderligere "+value_final+",00 DKK"; }else{ document.getElementById("rabat").innerHTML ="Du har købt for "+value+",00 DKK. Vi giver dig derfor gratis fragt! Mvh Stylee"; }
Tusind tak for hjælpen. Det virker dog stadig ikke når den kommer over 1000. Men smid et svar! :o) når den kommer over 1000 så skriver den 595.00,00 og trækker fra dette med 1.000 altså een krone af gangen. så hvies jeg ligger i kurven så der er: 1020 kr skriver den:
Få 5% rabat, hvis du køber for yderligere 593.98,00 DKK
og den skulle gerne skrive:
Få 10% rabat, hvis du køber for yderligere 75,00 DKK
Og når dne kommer over 1095 skrive:
Du har købt for ">1095,00" DKK. Vi giver dig derfor gratis fragt! Mvh Stylee
Jeg tror at ved 1000 rykker nogle af tallene sig, og derfor opfattes det som een krone med nogle kommatal.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.