Avatar billede Morten Professor
30. juni 2018 - 07:18 Der er 4 kommentarer og
1 løsning

Find tal i class

Hej Eksperter

Jeg vil høre er det muligt at have et element, en class, hvor der er et tal i eks. 1 varer. Vil bruge dette tal til at ændre farven i den class hvor tallet er.
Jeg håber det muligt, og jeg vil kunne komme videre i mit projekt.
Jeg er ikke lige den skarpeste til det med jquery endnu hehe :)
Så håber sådan på, at der er nogen der vil hjælpe mig på rette vej.

Med venlig hilsen
Morten
Avatar billede Morten Professor
30. juni 2018 - 07:48 #1
Jeg har prøvet mig lidt frem

jQuery( document ).ready(function() {
    jQuery("span.count").find(function() {
        var antal = jQuery("span.count").length;
        if(antal >= 0) {
        jQuery("#site-header-cart").css('background', '#000');
            alert(antal);
    } else {
        jQuery("#site-header-cart").css('background', '#fff');
    }});
});

Får desværre bare tallet 2 tænker det er fordi der er 2 ord "varer 2"
Avatar billede keysersoze Guru
01. juli 2018 - 09:05 #2
Hvis du kan opdatere indholdet i dit element var det så ikke lettere samtidig at opdatere klassen eller en data-attribut og så styre farven ud fra ren CSS?
Avatar billede Morten Professor
01. juli 2018 - 12:05 #3
Jeg ved ikke hvordan jeg får tilføjet det, da jeg er begyndt at arbejde med wordpress storefront temaet

Men fandt en løsning:
jQuery( document ).ready(function() {
    jQuery("span.count").find(function() {
        var antal = jQuery("span.count").html();
        var varer = "0 varer";
        if(antal === varer) {
        jQuery("#site-header-cart").css('background', '#000');
            alert(antal);
    } else {
        jQuery("#site-header-cart").css('background', '#fff');
    }});
});

Men hvis du kender en god løsning, som er mere dynamisk, ville det være rigtig godt.
Avatar billede olsensweb.dk Ekspert
01. juli 2018 - 18:45 #4
kan du ikke bare tage text'en og lave en split på den ??

http://api.jquery.com/text/
https://www.w3schools.com/jsref/jsref_split.asp

du vil gøre din css nemmere at vedligeholde, ved ikke at bruge inline style, læg en class på istedet.
https://api.jquery.com/addclass/

<!DOCTYPE html>
<html lang="da">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
<title>demo</title>
<style type="text/css">
.bg_ok{
    background-color: #000;
}
.bg_error{
    background-color: #fff;
}
</style>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<script type="text/javascript">
jQuery( document ).ready(function() {
    jQuery("span.count").find(function() {
        // var antal = jQuery("span.count").length;
        var ar = jQuery("span.count").text().split(" ");       
        var antal = ar[1];        
        if(antal >= 0) {
            // jQuery("#site-header-cart").css('background', '#000');
            jQuery("#site-header-cart").addClass( "bg_ok" );           
            alert(antal);
        } else {
            // jQuery("#site-header-cart").css('background', '#fff');
            jQuery("#site-header-cart").addClass( "bg_error" );
        }
    });
});       
</script>
</head>
<body>
<div id ="site-header-cart">sjfdsl</div>
<span class="count">varer 4</span>
</body>
</html>
Avatar billede Morten Professor
01. juli 2018 - 19:04 #5
Mange tak det er noget jeg kan bruge :-)
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

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