Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [DOM] modificare un contenuto di un tag html. mi aiutate?

    allora.. ho una pagina html contenente una tabella che non posso modificare. Posso solo aggiungere codice javascript in testa alla pagina, non modificare il resto del codice.

    La situzione è questa:

    <table>
    ....
    <td>testo</td>
    ....
    <td>testo</td>
    ....
    <td>testo</td>
    ....
    </table>


    Devo cambiare le scritte "testo" all'interno del tag <TD> in "ciao". (i tag td sono privi di id o classi css)
    Posso solo aggiungere javascript in testa alla pagina.
    Avevo pensato di fare una cosa del genere usando getElementsByTagName. Il fatto è che non so cosa mi "sputi" fuori questo metodo javascript.

    ho provato a scrivere così:
    ___________________________________________
    <script>
    // mi prendo i contenuti dei tag td
    var a = document.getElementsByTagName('td');

    // qui devo cercare nell'array la stringa "testo", se la trovo sostituisco con "ciao"
    for (var i = 0; (i < a.lenght()); i++){
    if (a[i] == "testo")
    a[i] = "ciao";
    }
    </script>
    <table>
    ....
    <td>testo</td>
    ....
    <td>testo</td>
    ....
    <td>testo</td>
    ....
    </table>
    ___________________________________________


    Solo che non mi funziona... A parte che so poco di Javascript e del metodo getelementsbytagname. Qualcuno puo' darmi una revisione al codice? E' possibile che abbia sbagliato completamente.
    grazie infinite

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    1 - non puoi fare getElementsByTagName di qualcosa che ancora non esiste nel codice: quelle istruzioni devono essere richiamate DOPO che la tabella è stata definita (ad esempio all'evento window.onload)

    2 -
    codice:
    <script...>
    window.onload = function() {
      var a = document.getElementsByTagName('td');
      for (var i = 0; i < a.length; i++){
         if (a[i].innerHTML == "testo") a[i].innerHTML = "ciao";
      }
    }
    </script>
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    grazie!! il codice funziona benissimo.
    Volero riadattarlo pero' facendo in modo che quel blocco di istruzioni venga eseguito, ogni volta, in un intervallo di un secondo (fino a che non avviene la sostituzione).
    Se uso windows on load la sostituzione avviene a pagina caricata e ho molte immagini nella pagina (passano 10 secondi ca).

    Ho provato in questo modo:

    codice:
    <script language="JavaScript" type="text/javascript">
      var temp = 0;
      for (var j = 0; j < 9000; j++){
        setTimeout('temp = replace();',1000); 
        if (temp == 1) j = 9000;
      }
      
      function replace(){
      
      var vet = document.getElementsByTagName('TD');
      var flag = 0;
      var nulla = 0;
      for (var i = 0; i < vet.length; i++){
         if (vet[i].innerHTML.indexOf("0,00") != -1) 
          if (vet[i+2].innerHTML.indexOf("0,00") != -1) {
          vet[i+2].innerHTML = "";    
          if (vet[i+2].innerHTML == "") flag = 1; 
          }
      }
      return j;
      }
    
    </script>
    
    
    //tabella html
    -il codice in verde è quello per la sostituzione del carattere (sostituisce 0,00 in uno spazio vuoto)[questo pezzo non ha problemi]
    -il codice in rosso: SE la sostituzione è avvenuta assegno a flag valore 1
    -flag viene passato come valore di ritorno e salvato in temp; se temp vale uno esco dal ciclo infinito..

    Se lo provo non da l'esito aspettato, anzi con iexplorer si impalla come se avessi creato un ciclo infinito...

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    mi spiace ma non puoi fare calcoli temporali quando devi utilizzare elementi che devono essere presenti

    Non puoi aspettare n secondi incrociando le dita e sperando che nel frattempo le celle si siano caricate, il tempo varia in base a diversi fattori che non puoi controllare

    L'unica è spezzettare la tua tabella in tante sottotabelle ad esempio

    codice:
    <head>
    <script>
    function applyReplacement(idtbl) {
      var a = document.getElementById(idtbl).getElementsByTagName('td');
      for (var i = 0; i < a.length; i++){
         if (a[i].innerHTML == "testo") a[i].innerHTML = "ciao";
      }
    }
    </script> 
    </head>
    
    <body>
    ...
    
    <table id="tabella1">
      <td>...</td>
      <td>...</td>
      ...
    </table>
    <script>
    applyReplacement('tabella1');
    </script>
    
    
    <table id="tabella2">
      <td>...</td>
      <td>...</td>
      ...
    </table>
    <script>
    applyReplacement('tabella2');
    </script> 
    
    ....
    e così via.

    Edit: utilizzando opprtunamente la proprietà CSS 'table-layout' il rendering dovrebbe essere più efficiente. http://www.quackit.com/css/css_table-layout.cfm
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    grassie per le dritte!
    purtroppo non posso modificare le tabelle... dunque mi accontento dell'evento window.onLoad e morta lì


    grazie ancora

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.