Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: jquery width()

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    23

    jquery width()

    Salve,
    ho questo problema:

    Nel mio html ho vari div con classe "wrapper". Dentro ogni wrapper c'è un'IMG.
    Io voglio sapere qual'è la lunghezza di tutte le img messe una dietro l'altra.
    Ho scritto questo:

    codice:
    var x = 0; 
    var totalWidth = 0; 
    
    $(".wrapper").each(function() { 
    totalWidth = totalWidth + parseInt(this.width()); 
    $("#debug").append("totalWidth = "+totalWidth+" x = "+x); 
    }); 
    
    $("#debug").append("totalWidth = "+totalWidth+" x = "+x);

    Premettendo che la x è solo una variabile messa lì per "controllo" e che effettivamente non serve a nulla [come le stampe nel div con id "debug"..] x' la console degli errori mi dice:
    Uncaught TypeError: Object http://localhost:8084/WebApplication1/ADV# has no method 'width'
    ??

    La cosa stramba è che nel resto dello script uso già il parseInt($(qualcosa).width()) e solo quando ho scritto questo metodo la console ha pensato di ribbellarsi -___-"

    Le ho provate tutte anche a mettere:
    codice:
    $(".wrapper img").each(function(){ ... }
    o scriverlo in altre forme.. non ne esco..

    come posso correggere la cosa?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    Codice PHP:
    var totalWidth 0

    $(
    ".wrapper").each(
        function() { 
            
    totalWidth totalWidth parseInt($(this).width()); 
            
    /*oppure
            totalWidth = totalWidth + parseInt(this.width); 
            */
        
    }
    ); 
    così dovrebbe andare, in javascript penso si utilizzi la .width senza parentesi (come property).

    Sarebbe buona norma scrivere il tutto in un solo linguaggio piuttosto che mischiare javascript classico e jquery.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    23
    Così ho tolto l'errore ma il codice cmq non funziona.
    Credo che la questione sia: la width al div viene data dopo il caricamento dell'immagine e non prima.

    Ho anche provato a scrivere:
    codice:
     $(".wrapper img").each(function() {
                    var img = new Image();
                    img.src = $(this).attr("src");
                       alert(img.width+""+img.clientWidth+""+img.naturalWidth+""+img.offsetWidth+""+img.scrollWidth );
    		//totalWidth = totalWidth + parseInt(this.width);
                    //$("#debug").append("totalWidth = " + totalWidth + " x = " + x);
    	});
    ma nell'alert ci sono solo zeri..

    Come faccio a far caricare lo script dopo che sia stato elaborato il DOM?

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    Codice PHP:
    $(document).ready(
        function(){
             
    totale 0;
             $(
    ".wrapper img").each(
                 function(){
                       
    totale += $(this).width();
                 }
              )
              
    alert(totale);
         }


  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    23
    Sembra assurdo ma purtroppo non funziona.. mi da cmq valori 0..

    Ci avevo pensato anche io a mandare lo script dopo la creazione del DOM ma per qualche motivo strambo non funziona...

    ho anche provato a mettere

    $(document).onload(function(){...});

    ma nada.. non riesco proprio a capire x' non mi legge correttamente il DOM.
    Dopo l'esecuzione dello script se controllo il DOM ci sono i valori giusti però -___-"

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    fa vedere la parte html

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    23
    codice:
    <div id="viewer" class="js-disabled"> 
        <a class="wrapper" href="#" title="Hangar">
            [img]style/img/adv1.png[/img]
        </a> 
        <a class="wrapper" href="#" title="Pannello di controllo">
            [img]style/img/adv2.png[/img]
        </a> 
        <a class="wrapper" href="#" title="Piper Pa 30 I-LUEL">
             [img]style/img/adv3.png[/img]
         </a> 
    </div>

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    Codice PHP:
    <html>
        <
    head>
            <
    script type='text/javascript' src='jq.js'></script>
            <script type='text/javascript'>
                $(document).ready(
                    function(){
                        totale = 0;
                        $(".wrapperImg").each(
                            function(){
                                alert($(this).width());
                                totale += $(this).width();
                            }
                        )
                        alert(totale);
                    }
                )
            </script>
        </head>
        <body>
            <div id="viewer" class="js-disabled"> 
                <a class="wrapper" href="#" title="Hangar">
                    [img]1.jpg[/img]
                </a> 
                <a class="wrapper" href="#" title="Pannello di controllo">
                    [img]2.jpg[/img]
                </a> 
                <a class="wrapper" href="#" title="Piper Pa 30 I-LUEL">
                     [img]3.jpg[/img]
                </a> 
            </div>
        </body>
    </html> 
    Così a me funziona.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    23
    Stesso codice a me da 0 per tutte le img..

    Che browser hai?

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    ho appena testato sui seguenti browser:

    firefox
    ie 9 beta
    opera
    safari
    chrome

    solo per gli ultimi due mi da il tuo stesso problema.

    Da una rapida ricerca su google mi pare di aver capito che è un bug di jquery, prova in javascript classico.

    Codice PHP:

    <html>
        <
    head>
            <
    script type='text/javascript' src='jq.js'></script>
            <script type='text/javascript'>
                /*$(document).ready(
                    function(){
                        totale = 0;
                        $(".wrapperImg").each(
                            function(){
                                alert($(this).width());
                                totale += $(this).width();
                            }
                        )
                        alert(totale);
                    }
                )*/
                
                function main(){
                    totale = 0;
                    for(x=0; x<document.images.length; x++){
                        totale+=document.images[x].width;
                    }
                    alert(totale);
                }
            </script>
        </head>
        <body onload='main()'>
            <div id="viewer" class="js-disabled"> 
                <a class="wrapper" href="#" title="Hangar">
                    [img]1.jpg[/img]
                </a> 
                <a class="wrapper" href="#" title="Pannello di controllo">
                    [img]2.jpg[/img]
                </a> 
                <a class="wrapper" href="#" title="Piper Pa 30 I-LUEL">
                     [img]3.jpg[/img]
                </a> 
            </div>
        </body>
    </html> 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.