PDA

View Full Version : [JavaScript - DOM] Domanda veloce sul metodo setAttribute


Zak84
13-12-2008, 17:03
Ciao a tutti.
Vi riporto un esempio del codice che mi sta dando problemi:


var x = 10;
var y = 10;
var z = 20;
var k = 20;

var body = document.getElementById("body");

var mappa = document.createElement("map");
mappa.setAttribute("name", "map1");

var zona = document.createElement("area");
zona.setAttribute("shape", "rect");
zona.setAttribute("coords", "x,y,z,k");
zona.setAttribute("nohref", "true");
zona.setAttribute("onmouseover", "document.writeln('ciao')");
mappa.appendChild(zona);
body.appendChild(mappa);


In sostanza vorrei crere una mappa su una immagine, in cui i vari elementi AREA hanno coordinate che gli passo io e che ho calcolato in precedenza (x,y,z,k nell'esempio).
Il problema è che se passo delle variabili alla setAttribute non funziona, mentre se gli do direttamente i valori numerici non ho problemi.

Avete qualche consiglio da darmi per risolvere il problema?

CozzaAmara
13-12-2008, 17:10
Hai provato a controllare cosa ti dà in output se usi le variabili?

Intendo ad esempio utilizzando Firebug per controllare il DOM dinamicamente.

Zak84
13-12-2008, 17:24
In corrispondenza dell'attributo coords mi da la stringa "x, y, z, k".
Nella specifica del DOM del metodo setAttribute (Link (http://www.zvon.org/php/Search/doc.php?pos=409)) se non ho capito male c'è scritto che si possono passare solo stringhe.
Se si vuole passare qualcosa di diverso bisogna prepararlo a parte creando un nodo Attr e poi usare il metodo setAttributeNode per passare l'attributo creato.
Solo che non ci ho capito molto. :confused:

Zak84
13-12-2008, 20:32
Ho risolto.
In pratica la risposta al problema me l'ero già data da solo dicendo che la setAttribute vuole una stringa...

La soluzione è questa:


var x = 10;
var y = 10;
var z = 20;
var k = 20;
var coordinate = new String(x + "," + y + "," + z + "," + k);
var body = document.getElementById("body");

var mappa = document.createElement("map");
mappa.setAttribute("name", "map1");

var zona = document.createElement("area");
zona.setAttribute("shape", "rect");
zona.setAttribute("coords", coordinate);
zona.setAttribute("nohref", "true");
zona.setAttribute("onmouseover", "document.writeln('ciao')");
mappa.appendChild(zona);
body.appendChild(mappa);


Magari a qualcuno torna utile. :)


BYEZZZZZZZZZZ!!!!!!!!!!

CozzaAmara
14-12-2008, 11:24
Perfetto ;)