Avatar billede martinsorensen Nybegynder
09. juli 2009 - 13:13 Der 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?

MVH

Martin
Avatar billede majbom Novice
09. juli 2009 - 13:19 #1
det ville være rart at vide hvordan dit kurvsystem er bygget op, eller er det ret svært at hjælpe tror jeg... :)
Avatar billede martinsorensen Nybegynder
09. juli 2009 - 13:27 #2
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.

Mvh
Avatar billede majbom Novice
09. juli 2009 - 13:47 #3
nååh...

så prøv med:

var myDiv = document.getElementById('dindiv');
var myTextNode = myDiv.firstChild;
var myText = myTextNode.data;
alert(myText);
Avatar billede martinsorensen Nybegynder
09. juli 2009 - 14:35 #4
Tak for dit svar. Kan se hvad du mener:

<td valign="top" id="ShopLayOut_Basket_TD" class="Basket_TD" style="height:50px;width:186;" >
                                                <STYLE>
.DivClick_Basket{width:100%;}
</STYLE>
<DIV ID="DivClickBasket" STYLE="cursor:pointer;" ONCLICK="ShowBasket();" CLASS="DivClick_Basket">
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD CLASS="Heading_Basket" COLSPAN="2"><A HREF="/shop/showbasket.html">Vis kurv</A></TD>
</TR>
<TR>
<TD COLSPAN="2" CLASS="NumberProduct_Basket"><BR><SPAN>0 varer i kurven 
                      </SPAN></TD>
</TR>
<TR>
<TD CLASS="TotalSum_Basket" WIDTH="50%"><br>
<b>I alt</b></TD>
<TD CLASS="Amount_Basket" WIDTH="50%">0,00 DKK</TD>
</TR>
</TABLE>
</DIV><SCRIPT>

Det jeg vil have er værdien af det jeg har markeret med FED ud i en variabel.

TD id="ShopLayOut_Basket_TD"

tak!

:o)
Avatar billede majbom Novice
09. juli 2009 - 14:48 #5
yes...

<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>

<TD CLASS="Amount_Basket" WIDTH="50%" id="dindiv">0,00 DKK</TD>

?
Avatar billede martinsorensen Nybegynder
09. juli 2009 - 15:21 #6
Ja det hjalp helt sikkert.. skal lige rode lidt med det. Her er hvad jeg har fundet ud af indtil nu:

----------
var myDiv = document.getElementById('ShopLayOut_Basket_TD');
var myText = myDiv .innerHTML;
var matchPos1 = myText.indexOf('DKK');

if(matchPos1 != -1){
  var value = myText.substr(519, 4); //Starter ved teg 519 og 4 frem
  alert('VÆRDI: '+value);
}
---------

Som du kan se ændrede jeg lidt i det. Det første virkede ikke rigtigt.

Det her også kun lidt lappe løsning.

Jeg har denne værdi her:

0,00

Jeg vil da gerne have alle tegn frem til kommaet udskrevet.

Så hvis der står 1093,00 udskriver den 1093 og hvis der står 550 udskriver den 550. Har du en idé til det?

Og tusind tak for hjælpen idtil videre, det er lige hvad jeg har brug for! :D
Avatar billede majbom Novice
09. juli 2009 - 15:34 #7
du har ikke mulighed for at sætte et id på den TD med værdien i?

i stedet for at du skal 519 tegn frem og du bruger også innerHTML...
Avatar billede martinsorensen Nybegynder
09. juli 2009 - 15:37 #8
Desværre nej :o( sidder med et møj CMS system, hvor man ikke kan tilføje et ID.
Avatar billede majbom Novice
09. juli 2009 - 15:57 #9
hvis du ikke har andre td'er der bruger denne class: 'Amount_Basket' - så kan vi godt få fat i den...

leger lige lidt med det senere
Avatar billede martinsorensen Nybegynder
09. juli 2009 - 16:02 #10
Perfekt.. der er ikke andre som bruger Amount_basket.

Tak! Kigger ind senere i aften :o)

Tak for det! :D
Avatar billede majbom Novice
10. juli 2009 - 08:21 #11
sorry, nåede det sq ikke lige i går...

prøv det her:

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);
                        }
                    }
                }
            }
Avatar billede martinsorensen Nybegynder
10. juli 2009 - 10:52 #12
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!

Mvh

Martin
Avatar billede majbom Novice
10. juli 2009 - 11:00 #13
jamen hvis det virker med min kode, hvorfor så bruge ovenstående som er noget mere omstændigt? :)

tilpasning?
Avatar billede martinsorensen Nybegynder
10. juli 2009 - 14:23 #14
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.
Avatar billede majbom Novice
10. juli 2009 - 14:41 #15
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";
                            }
                       
                        }
                    }
                }
            }
Avatar billede martinsorensen Nybegynder
11. juli 2009 - 00:21 #16
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.

Mvh

Martin
Avatar billede majbom Novice
13. juli 2009 - 08:05 #17
jeg kan ikke lige se hvorfor det ikke skulle virke ved dig, det virker her: http://majbom.com/testarea/exp/880424/
Avatar billede majbom Novice
14. juli 2009 - 08:12 #18
tak for point

fik du det til at spille?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester