Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di reiziel
    Registrato dal
    Jun 2007
    Messaggi
    144

    document.getElementById

    Premetto che da poco sto iniziando a studiare javascript , online ho trovato uno script che riesce a calcolare se un immagine esiste , in caso contrario la sostituisce con unaltra , il mio problema è che vorrei che questo script non funzionasse in body overload , ma nei div che imposto io , leggendo le guide e i forums ho trovato questa funzione document.getElementById ma non è cambiato nulla , lo script vorrei funzionasse solo tra i div id prova e non in tutta la pagina , il codice è il seguente

    Codice PHP:
    <html
    <
    head
    <
    script type="text/javascript"
    var 
    div document.getElementById("prova");
     
    window.onload fixBrokenImages;   
      function 
    fixBrokenImages(){ 
        var 
    imglst document.images
        for(var 
    0imglst.lengthi++){ 
          
    imglst[i].onerror = function() { 
            
    this.src "http://www.google.it/logos/republicdayit10.gif"
          } 
          
    imglst[i].src imglst[i].src
        } 
      } 
    </script> 
    </head> 
    <body > 
    <div id="prova">
    [img]http://picasa.google.com/images/logo.jpg[/img] 
    [img]http://www.google.it/logos/republicdayit1000.gif[/img]  
    </div>
    [img]http://picasa.google.com/images/logo.jpg[/img] 
    [img]http://www.google.it/logos/republicdayit1000.gif[/img]  
    </body> 
    </html> 
    Silence please work in progress

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    L'operazione non dovrebbe rilevare la presenza/assenza di immagini al di fuori dal tuo sito giusto?
    Perché credo che non sia possa fare, comunque prova cosi:
    codice:
    <script type="text/javascript">
    var div = document.getElementById("prova");
    window.onload = function (){
        var imglst = div.getElementsByTagName("img");
        for(var i = 0; i < imglst.length; i++){
          imglst[i].onerror = function() {
            this.src = "http://www.google.it/logos/republicdayit10.gif";
          }
          imglst[i].src = imglst[i].src;
        }
      }
    </script>
    prima fai la prova su di un dominio tuo, poi prova (de ti serve) su domini esterni, ma come già detto non dovrebbe funzionare.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di reiziel
    Registrato dal
    Jun 2007
    Messaggi
    144
    L'operazione non dovrebbe rilevare la presenza/assenza di immagini al di fuori dal tuo sito giusto?
    Perché credo che non sia possa fare
    si funziona anche con immagini esterne.
    infatti se copi il codice , funziona , il problema è che mi funziona sia tra i tag div sia dopo quando i tag div non ci sono
    Silence please work in progress

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    perche' parli di document.getElementById('prova') fuori dall' onload?
    div lo devi definire nella funzione che richiami all' onload

  5. #5
    Utente di HTML.it L'avatar di reiziel
    Registrato dal
    Jun 2007
    Messaggi
    144
    perche' parli di document.getElementById('prova') fuori dall' onload?
    div lo devi definire nella funzione che richiami all' onload
    Non ne capisco tanto di javascript ma butto giu un idea..
    Potrei togliere l'onload e mettere un if se la variabile div ha come valore prova mi fa lo script?
    non so potrei aver detto anche una c...a
    Silence please work in progress

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    senti: prendi quello che ti ha suggerito andrea e sposta solo
    var div = document.getElementById("prova");
    dopo
    window.onload = function (){

  7. #7
    Utente di HTML.it L'avatar di reiziel
    Registrato dal
    Jun 2007
    Messaggi
    144
    perfetto funziona.

    Grazie mille cavicchiandrea e Xinod
    Silence please work in progress

  8. #8
    Utente di HTML.it L'avatar di reiziel
    Registrato dal
    Jun 2007
    Messaggi
    144
    uhm piccolo problemino , come mai lo script funziona solo per il primo div e non per tutti gli altri? anche se lo metto in un ciclo while

    ad esempio mettendo :

    Codice PHP:
    <div id="prova"
    [
    img]http://picasa.google.com/images/logo.jpg[/img] 
    [img]http://www.google.it/logos/republicdayit1000jj.gif[/img]  
    </div
    <
    div id="prova"
    [
    img]http://picasa.google.com/images/logo.jpg[/img] 
    [img]http://www.google.it/logos/republicdayit1000jj.gif[/img]  
    </div
    <
    div id="prova"
    [
    img]http://picasa.google.com/images/logo.jpg[/img] 
    [img]http://www.google.it/logos/republicdayit1000jj.gif[/img]  
    </div
    mi funziona solo la prima volta
    Silence please work in progress

  9. #9
    Originariamente inviato da reiziel
    uhm piccolo problemino , come mai lo script funziona solo per il primo div e non per tutti gli altri? anche se lo metto in un ciclo while

    ad esempio mettendo :

    Codice PHP:
    <div id="prova"
    [
    img]http://picasa.google.com/images/logo.jpg[/img] 
    [img]http://www.google.it/logos/republicdayit1000jj.gif[/img]  
    </div
    <
    div id="prova"
    [
    img]http://picasa.google.com/images/logo.jpg[/img] 
    [img]http://www.google.it/logos/republicdayit1000jj.gif[/img]  
    </div
    <
    div id="prova"
    [
    img]http://picasa.google.com/images/logo.jpg[/img] 
    [img]http://www.google.it/logos/republicdayit1000jj.gif[/img]  
    </div
    mi funziona solo la prima volta
    Devi mettere ID diversi.
    In un documento pu&ograve; esserci uno ed un solo elemento per ogni ID
    (non si possono mettere ID uguali per elementi diversi!)
    quindi:
    codice:
    <script type="text/javascript">
    window.onload = function (){
         for (j=1;j<=3;j++) {
              var div = document.getElementById("prova"+j.toString());
              var imglst = div.getElementsByTagName("img");
              for(var i = 0; i < imglst.length; i++){
                   imglst[i].onerror = function() {
                        this.src = "http://www.google.it/logos/republicdayit10.gif";
                   }
                   imglst[i].src = imglst[i].src;
              }
         }
    }
    </script>
    codice:
    <div id="prova1"> 
     
      
    </div> 
    <div id="prova2"> 
     
      
    </div> 
    <div id="prova3"> 
     
      
    </div>
    HTH
    Zappa
    P.S: editato
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  10. #10
    Utente di HTML.it L'avatar di reiziel
    Registrato dal
    Jun 2007
    Messaggi
    144
    perfetto , visto che il numero di div varierà asseconda di una query e quindi inserirò un ciclo for anche per denominare l'id delle div con il php , a chi interessa posto il codice completo per gli utenti di html

    Codice PHP:
    $max = "3"; // quante div creare
    <script type="text/javascript">
    window.onload = function (){
     for (j=1;j<=<?php echo "$max";?>;j++) {
    var div = document.getElementById("prova"+j.toString());
        var imglst = div.getElementsByTagName("img");
        for(var i = 0; i < imglst.length; i++){
          imglst[i].onerror = function() {
            this.src = " IMMAGINE PREDEFINITA ";
          }
          imglst[i].src = imglst[i].src;
           }
       }
    }
    </script>
    <?php
    for ($a=1;$a<=$max;$a++) {
    ?>
    <div id="prova<?php echo "$a";?>"> 
     
    </div> 
    <?php
    ?>
    Silence please work in progress

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 © 2025 vBulletin Solutions, Inc. All rights reserved.