PDA

View Full Version : [JS] Passare un array ed effettuare la somma degli elementi


robertino_salemi
28-02-2014, 17:51
Salve a tutti,
ho una lista di DIV dei quali sto prendendo la rispettiva altezza e vorrei sommarla.

Visto che è un'operazione che dovrei ripetere diverse volte vorrei creare una funzione, ma non c'è qualcosa che non va:


HeightDataTables = function (divList)
{
var sumDiv = 0
for (i = 0; i < divList.length; i++) {
sumDiv += $(divList[i]).outerHeight(true);
}
alert(sumDiv);
return $(window).height() - sumDiv;
}

var divList = ["header", "#pageTitle"]
alert(HeightDataTables(divList));


Mi da errore nel JS dicendomi "L'oggetto non supporta la proprietà o il metodo 'HeightDataTables"

Grazie.

OoZic
28-02-2014, 18:26
1- consiglio di usare jsfiddle.net per farsi aiutare, solo il codice postato così non dice molto.
2- se puoi utilizza sempre JSHint come linter che ti dice se ci sono errori nel codice o bad practise (nel tuo mancano 3 semicolon per esempio)
http://jsfiddle.net/54w8A/
(pulsante tidyup in jsfiddle)
3- da quel che mi pare di capire nel tuo codice potresti utilizzare un approccio diverso invece che avere una divList utilizza una classe che metti in tutti i div che ti interessa eseguire quella funzione.

Tuvok-LuR-
28-02-2014, 21:55
se hai quell'errore molto probabilmente nel punto in cui richiami la funzione essa non è visibile, o la stai chiamando sull'oggetto sbagliato

robertino_salemi
03-03-2014, 08:37
Buon dì a tutti!
Sapete dov'era l'errore?
Proprio nella definizione dell'ARRAY, una svita che mi ha fatto perdere un pò di tempo! :)


var divList = new Array("header", "pageTitle")


Per il resto funziona perfettamente.

Grazie a tutti.

PS. OoZic concordo per l'utilizzo di JsFiddle, la prossima volta posterò direttamente il codice lì.

OoZic
03-03-2014, 10:38
ti consiglio vivamente di inizializzare un array utilizzando le parentesi quadre

var divList = ["header","pagTitle"];

;)

robertino_salemi
03-03-2014, 10:59
E' errato inizializzarla in quel modo?

airon
03-03-2014, 11:08
Non è sbagliato ma in casi più complessi se non si sta attenti si possono commettere errori (push, pop, lenght ecc.).

Poi la notazione literal, cioè [], è più veloce della new array().

CIao

robertino_salemi
03-03-2014, 11:21
Ottimo, grazie! :D