Colorare i button con una function

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Salve a tutti, gentilmente ho questa piccola cosa da chiedervi...

ho questi button :

HTML:
<INPUT id ="buttono1" class="button1" TYPE="button" VALUE="Chiuda Immagine" onclick="piccola('img1');"/>
<INPUT id ="buttono2" class="button1" TYPE="button" VALUE="Chiuda Immagine" onclick="piccola('img2');"/>
-------------
e vorrei cambiargli colore in base alla cella in cui si trovano.... prendendo una funzione da voi già diciamo corretta ( meglio dire fatta ex novo... )... ho fatto cosi :

HTML:
             function coloratasto() {

             for(var d = 0; d < 106; d++) {
               var tastost = document.getElementById("buttono"+d); 
                 var count_but = tastost.lenght;
                for(var i = 0; i < count_but; i++) {
                        if(i%2==0) {    
                               tastost[i].style.backgroundColor  = "DODGERBLUE"; 
                         }else{
                               tastost[i].style.backgroundColor  = "TOMATO"; }
                               }
                                       } }
ma come al solito non mi funziona.... cosa ho sbagliato gentilemente ??
Domenico.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
questo è sbagliato
Codice:
tastost.lenght;
sintassi corretta
Codice:
tastost.length;
il resto non l'ho guardato
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
hai 106 button?
perchè conti il length del button?
che lunghezza pensi di ottenere?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
sicuro che questo sia un vettore?
Codice:
var tastost = document.getElementById("buttono"+d);
non è semplicemente il riferimente all'oggetto?
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Scusami non cambia tanti valori quanti ne sono quelli che da il for ?
Cioè se d = 1

var tastost = document.getElementById("buttono"+1);

se d = 2

var tastost = document.getElementById("buttono"+2);

Attenzione non è venirti contro... spiego solo la mia logica... per capire.. sia ben chiaro eh... per te e per tutti.... sto semplicemente chiedendo aiuto.... e quindi a domanda rispondo :)
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Mi sono riferito a questa funzione presa sotto i vostri suggerimenti che funziona benissimo e diciamo che l'ho voluta modificare ... sicuramente ho errato... ma non so dove...

HTML:
            function coloracelle() { 
               
            for(var g = 0; g < 7; g++) {
            var tabella = document.getElementById("tabellas"+g);
                                                 
 var td = tabella.getElementsByTagName('td');
    var count_td = td.length;
for(var i = 0; i < count_td; i++) {
if(i%2==0) {
td[i].style.backgroundColor = "TOMATO";
}else{
td[i].style.backgroundColor = "DODGERBLUE"; }
}
} }
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Sto cercando appunto di seguire il tuo ragionamento
o preferisci che ti posto il codice funzionante?

Secondo me il ciclo interno non ti serve a nulla e ti manda in errore lo script
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Fatto cosi :

HTML:
             function coloratasto() {

             for(var d = 0; d < 106; d++) {
               var tastost = document.getElementById("button"+d); 


                        if(d%2==0) {    
                               tastost[d].style.backgroundColor  = "DODGERBLUE"; 
                         }else{
                               tastost[d].style.backgroundColor  = "TOMATO"; }
                               
                                       } }
Ma neanche va :(
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Non so se ridere o piangere.... corretto ma cmq neanche va...

HTML:
             function coloratasto() {

             for(var d = 0; d < 106; d++) {
               var tastost = document.getElementById("buttono"+d); 


                        if(d%2==0) {    
                               tastost[d].style.backgroundColor  = "DODGERBLUE"; 
                         }else{
                               tastost[d].style.backgroundColor  = "TOMATO"; }
                               
                                       } }
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Il primo "buttono" è 1 non 0

di conseguenza è piu logico far partire il contatore da 1 anziche da 0

o in alternativa aggiungere un "buttono0"
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
HTML:
             function coloratasto() {

             for(var d = 1; d < 106; d++) {
               var tastost = document.getElementById("buttono"+d); 


                        if(d%2==0) {    
                               tastost[d].style.backgroundColor  = "DODGERBLUE"; 
                         }else{
                               tastost[d].style.backgroundColor  = "TOMATO"; }
mi spiace ... davvero.... ma non va.... chiaramente ho riposto la funzione sotto a tutto come le altre... :(
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
dicevo prima che tastost non è un vettore
tastost[d]
semplicemente
Codice:
tastost.style.backgroundColor  = "DODGERBLUE";
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Ed infatti cosi corretto funziona... però perdonami perchè allora nella funzione coloracelle c'è td ??
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
perche in quel caso td è un vettore
HTML:
var td = tabella.getElementsByTagName('td');
ovvero contiene tute le td della tabella poiche il metodo usato è getElementsByTagName() e non getElementById) come in questo caso
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Capito e grazie della pazienza....
sai una cosa... ho 106 td con relativi 106 button
sino ad un 90 td il colora tasti funziona. dopo no... mah....
devo ricontrollare... :(
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Aspita... no peggio ancora.... i td chiaramente sono divisi 15 alla volta per ogni tabella visualizzata.. bene per le tabelle dispari il codice funziona, per quelle pari il colore si presenta all'incontrario... ma la funzione non vede l'id del button ?..
Perchè si associa alla tabella 1, 2 , 3, 4... ????
Anzi perchè capitano tutte a me.... :((