Avatar billede newcoma Nybegynder
18. januar 2010 - 14:40 Der er 12 kommentarer og
1 løsning

jquery condition virker ikke

Hej

Jeg forsøger at få nedenstående til at udføre alert hvis #left div har img med trans.gif og  #right div ikke har et img med trans.gif. Men det virker ikke. Hvad gør jeg galt?


    $(document).ready(function() {
            if ($("#left img[src^=trans.gif]").size() > 0
                && $("#right img").attr("src") != "trans.gif")                                     
                                                           
       
              {
                  alert ("helloworld");
               
                  };
    });
Avatar billede intenz Novice
18. januar 2010 - 14:52 #1
Har du prøvet køre en alert på de variabler du tjekker? Så du kan se hvad den egentlig returnerer. Det gør det lidt nemmere at se hvad fejlen er.

alert($("#left img[src^=trans.gif]").size());
alert($("#right img").attr("src"));
Avatar billede newcoma Nybegynder
18. januar 2010 - 15:43 #2
Jeg får 0 og undefined...
Avatar billede intenz Novice
18. januar 2010 - 16:07 #3
Så er denne her heller ikke sand:
$("#left img[src^=trans.gif]").size() > 0
Avatar billede newcoma Nybegynder
18. januar 2010 - 16:18 #4
Men her er html
<div id="left">
<img src="trans.gif"/>
</div>

og det skulle da stemme med billedet
Avatar billede intenz Novice
18. januar 2010 - 16:30 #5
Hvorfor gør du ikke bare ligesom du gør med right?

Så den bliver:
if ($("#left img").attr("src") == "trans.gif") && $("#right img").attr("src") != "trans.gif")
Avatar billede newcoma Nybegynder
18. januar 2010 - 16:57 #6
Det virker stadig ikke

$(document).ready(function() {
if ($("#left img").attr("src") == "trans.gif") && $("#right img").attr("src") != "trans.gif")
  {
alert ("helloworld");
  };
});
Avatar billede intenz Novice
18. januar 2010 - 19:39 #7
Det ville klæde dig at skrive hvad fejlen var, i stedet for bare "det virker ikke". Det er tydeligt når man kører den, at der kommer en syntaks fejl.

Og det kan så nemt rettes ved at fjerne en afsluttende parentes.

$(document).ready(function() {
if ($("#left img").attr("src") == "trans.gif" && $("#right img").attr("src") != "trans.gif")
  {
alert ("helloworld");
  };
});
Avatar billede newcoma Nybegynder
19. januar 2010 - 11:32 #8
Nu forsøger jeg at lave funktionen uden brug af jquery. Jeg kan bare ikke få det til at køre den sidste alert "alert("third");". Kan du se hvad der er galt?

function center() {
        if (document.getElementById("left").getElementsByTagName('img')[0]) {
          var imgcheck = document.getElementById("left").getElementsByTagName('img')[0].src;
          var imgcheckRight = document.getElementById("right").getElementsByTagName('img')[0].src;
       
          if (imgcheck.indexOf("test") > 1 && imgcheck.indexOf("testtest") > 1) {
              alert("first");
           
          }
          else if (imgcheck.indexOf("test") > 1 ) {
              alert("second");
             
          }
          else if (imgcheckRight.indexOf("test") > 1) {
              alert("third");
             
          }
      }
   
}

HTML <div id="right">
<img src="test"/></div>

<div id="left">
<img src=""/></div>
Avatar billede intenz Novice
19. januar 2010 - 11:44 #9
Det er fordi elementer begge hedder test.

Her er et eksempel der virker i jquery:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
    center();
});

function center() {
        if (document.getElementById("left").getElementsByTagName('img')[0]) {
          var imgcheckLeft = $("#left img").attr("src");
          var imgcheckRight = $("#right img").attr("src");
          if (imgcheckLeft != '' && imgcheckRight != '') {
              alert("first");
           
          }
          else if (imgcheckLeft != '') {
              alert("second");
             
          }
          else if (imgcheckRight != '') {
              alert("third");
             
          }
      }
   
}
</script>

<div id="right">
<img src="test"/></div>

<div id="left">
<img src=""/></div>
Avatar billede newcoma Nybegynder
19. januar 2010 - 15:56 #10
Tusind tak. Jeg har prøvet at arbejde lidt videre med det. Lige nu prøver jeg at få den til at køre alert("960"); hvis begge div'er er tomme eller har img med src="trans" Men den bliver ved med at køre  alert("1080"); Kan du hjælpe mig lidt?

function center() {
          var lEmpty = $p("#left").is(":empty");
         
          var rEmpty = $p("#right").is(":empty");
         
          var imgcheckL = $p("#left img").attr("src");
          var imgcheckR = $p("#right img").attr("src");
         
          if ((imgcheckL != 'trans.gif') &&
            (lEmpty == false) &&
            (imgcheckR != 'trans.gif') &&
            (rEmpty == false))
          {
              alert("1170");
          }
          else if ((rEmpty == false) &&
                  (imgcheckR != 'trans.gif') &&
                  (lEmpty == true) ||
                  (imgcheckL = 'trans.gif'))
          {
              alert("1080");
          }
            else if ((lEmpty == true) &&
                      (rEmpty == true) ||
                      (imgcheckL = 'trans.gif') ||
                      (imgcheckR = 'trans.gif')
                      )
          {
              alert("960");
          }
}

HTML <div id="right"></div>
<div id="left"><img src="trans.gif"/></div>
Avatar billede intenz Novice
19. januar 2010 - 16:22 #11
Du er tæt på, du bruger bare bruge dobbelt == for at tjekke om en variabel er sat.

F.eks.:
imgcheckR = 'trans.gif'

Skal være:
imgcheckR == 'trans.gif'

I stedet for at køre alle de der statements ved hver else if, kan du med fordel køre dem en gang i starten. Det gør det hele lidt mere overskueligt. Prøv at se dette eksempel (virker vist også som du vil have det).

function center() {
    var imgcheckRight = $("#right img").attr("src");
    if (imgcheckRight == 'trans.gif' && imgcheckRight != undefined) imgRightIsset = true;
    else imgRightIsset = false;

    var imgcheckLeft = $("#left img").attr("src");
    if (imgcheckLeft == 'trans.gif' && imgcheckLeft != undefined) imgLeftIsset = true;
    else imgLeftIsset = false;

    if (imgRightIsset == false && imgLeftIsset == true) {
        alert("Left er sat, Right er ikke sat");   
    }
    else if (imgRightIsset == true && imgLeftIsset == false) {
        alert("Right er sat, Left er ikke sat");
    }
    else {
        alert("Enten er begge sat eller ingen er sat");
    }
   
}
Avatar billede newcoma Nybegynder
19. januar 2010 - 21:48 #12
Hey nu virker det, men jeg bliver nødt til at tjekke på om trans.gif bare er en del af src, så har prøvet med
 
var imgcheckRight = $("#right img[src^=trans.gif]");

men den returner object object. Har du også lidt hjælp her ?
Avatar billede intenz Novice
25. januar 2010 - 12:58 #13
Ja, du skal bruge denn her i stedet:
var imgcheckRight = $("#right img[src*=trans.gif]");

Så tjekker den om trans.gif findes i src attributen.

Så kan du tjekke om den har fundet et element med:
if (imgcheckRight.length > 0) {
// den findes
} else {
// den findes ikke
}
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