2015-09-22 18 views
5

Piuttosto semplice. Questo è il mio codice molto inefficiente:Come aggiungere la variabile contatore al nome della variabile?

var slider1 = new Slider("#survey1", { 
    precision: 2, 
    value: 5 
}) 
var slider2 = new Slider("#survey2", { 
    precision: 2, 
    value: 5 
}) 
var slider3 = new Slider("#survey3", { 
    precision: 2, 
    value: 5 
}) 
var slider4 = new Slider("#survey4", { 
    precision: 2, 
    value: 5 
}) 
var slider5 = new Slider("#survey5", { 
    precision: 2, 
    value: 5 
}) 

Sono sicuro che questo può essere reso molto più efficiente, dovrebbe andare fino a "# survey13", ma ho saltato il resto per risparmiare spazio. Forse un ciclo for? Come posso aggiungere il contatore al nome della variabile e id di riferimento?

risposta

9

Si può dire come muggito

var sliders = [] 
for (var i = 1; i <= 13; i++) { 
    var slider = new Slider("#survey" + i, { 
     precision: 2, 
     value: 5 
    }); 
    sliders.push(slider); 
} 

Quindi in realtà il tuo slider1 è sliders[0] e slider2 è sliders[1] e così via.

4

È possibile utilizzare il ciclo for per creare un dispositivo di scorrimento con ciascun elemento. È possibile aggiungere l'istanza del cursore nell'array e utilizzarla in un secondo momento.

var options = { 
    precision: 2, 
    value: 5 
}; 
var slider = []; 

for (var i = 1; i <= 13; i++) { 
    slider.push(new Slider("#survey" + i, options)); 
} 

Se il supporto plug più selettori

var slider = new Slider("#survey1, #survey2, #survey3 ...", { 
    precision: 2, 
    value: 5 
}); 

altro modo sarebbe assegnerà una classe comune a tutti gli elementi ed utilizzando questa classe per assegnare cursore. Come detto sopra, ciò dipende dalla definizione di Slider.

var slider = new Slider(".slider", { 
    precision: 2, 
    value: 5 
}); 
2

Prova con matrice:

var sliders = []; 
var cfg = { 
    precision: 2, 
    value: 5 
}; 
for (var i = 1; 13 >= i; i++) 
    sliders[i] = new Slider("#survey" + i, cfg); 

Se si desidera avere chiamato variabili poi andare per oggetto:

var sliders = {}; 
var cfg = { 
    precision: 2, 
    value: 5 
}; 
for (var i = 1; 13 >= i; i++) 
    sliders['survey' + i] = new Slider("#survey" + i, cfg); 
0

Non è possibile modificare riferimento id ma è possibile creare con php prima pagina del carico

+0

Perché introduci il PHP? –

+0

@Dave è nuovo e voleva solo aiutare. – HopefullyHelpful

+0

@sirmagid Le domande hanno il tag "javascript" in modo che l'utente stia cercando solo soluzioni javascript. Se l'utente cercava "php" e "javascript" avrebbe entrambi i tag. Se sei bravo in php, fai clic sui "tag" nella parte superiore della pagina e cerca php, domande. – HopefullyHelpful

1

Meglio di un array, come suggerito dagli altri, è utilizzare un oggetto:

var id = 'survey', 
    sliders = {}, 
    i = 13; 

do { 
    sliders[id + i] = new Slider('#' + id + i, { 
    precision: 2, 
    value: 5 
    }); 
} while(i--); 

Quindi è possibile utilizzare l'oggetto che hai creato: sliders.survey1, sliders.survey2 ecc!

Problemi correlati