2012-08-24 11 views
13

Sto cercando di incrementare la posizione di un elemento, ad esempio, x pixel. Ecco quello che ho provato finora:Uso di JavaScript per incrementare i valori superiore/sinistro/inferiore/destro

var top = document.getElementById("something").style.top; 
top = top + "300px" 

So che questo non è andare a lavorare, ma mi chiedevo se fosse possibile per incrementare un valore di posizione come questo.

+2

Perché era questo downvoted? Questa è una domanda perfettamente valida. – Brad

risposta

11

Perché style.top è una stringa con unità alla fine di esso come "300px" è possibile eseguire solo calcoli matematici quando si converte solo la parte numerica in un numero effettivo.

Supponendo di avere un elemento posizionato (in modo da impostare il valore top farà qualcosa) e hai già uno stile top impostato direttamente sull'elemento e non impostare tramite CSS (in modo da ottenere obj.style.top effettivamente ottenere qualcosa), è possibile farlo analizzando il numero di valore stile come questo:

var obj = document.getElementById("something"); 
var topVal = parseInt(obj.style.top, 10); 
obj.style.top = (topVal + 300) + "px"; 

esempio di lavoro: http://jsfiddle.net/jfriend00/pt46X/

+0

Ho digitato un piccolo codice: http://jsfiddle.net/wLf35/ Non riesco a trovare l'errore qui però. – day0

+1

@ day0 - Come ho detto nella mia risposta, 'obj.style.top' non recupererà un valore impostato in CSS. Dovrai utilizzare una versione cross-browser di 'window.getComputedStyle()' se il tuo stile è impostato tramite CSS. 'obj.style.top' recupera solo i valori di stile impostati direttamente sull'oggetto (non tramite CSS). In jsFiddle, devi anche impostare il codice in modo che sia la testa o il corpo in modo che le tue funzioni siano nell'ambito globale e siano raggiungibili come le chiami. Vedi qui: http://jsfiddle.net/jfriend00/CG68f/ – jfriend00

+0

Ah è fantastico! Grazie mille. Non ho mai incontrato '.getComputedStyle()' da nessuna parte. Grazie ancora! – day0

2

che non funzionano bene, perché, per esempio, se top aveva un valore di 200px, sarebbe diventare "200px300px". Prova questo:

var elem = document.getElementById("something"); 
elem.style.top = parseInt(elem.style.top, 10) + 300 + "px" 

Demo WEEEE!!!!

+0

FARLO STOP !!! – BNL

Problemi correlati