PDA

View Full Version : [Javascript] Quesito DOM


satoshi2005
14-01-2008, 17:52
Salve gente,
Non sono sicuro che si possa fare, ma qualcuno di voi magari lo sa e può aiutarmi.. Allora la domanda è questa, avendo il seguente codice:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head>
<script type="text/javascript">
function Oggetto(width, height) {
var div = document.createElement('div');
div.style.width = width + "px";
div.style.height = height + "px";
div.style.backgroundColor = "#cccccc";
}
</script>
</head>
<body>
<div id="qui">
<script type="text/javascript">
oggetto = new Oggetto(200, 100);
</script>
</div>
</body>
</html>

Vorrei che l'elemento che creo con il DOM nell'oggetto "Oggetto" lo inserisca li dove ho richiamato l'oggetto (nel div "qui" in pratica). Come posso fare?

Grazie mille! Sato

kk3z
14-01-2008, 21:04
<element.appendChild> (http://developer.mozilla.org/en/docs/DOM:element.appendChild):
document.getElementById("qui").appendChild(div);

satoshi2005
15-01-2008, 07:39
<element.appendChild> (http://developer.mozilla.org/en/docs/DOM:element.appendChild):
document.getElementById("qui").appendChild(div);
Certo che così funzionerebbe, ma io intendo dire che all'interno dello script io non conosca il fatto che questo script è all'interno del div "qui" capisci? Vorrei che lo script riuscisse a mettere il div (che crea con createElement) nel div "qui" senza però sapere l'id del div "qui"..

Grazie comunque! sato

kk3z
15-01-2008, 09:52
<script type="text/javascript">
function Oggetto(element, width, height) {
var div = document.createElement('div');
div.style.width = width + "px";
div.style.height = height + "px";
div.style.backgroundColor = "#cccccc";

element.appendChild(div);

//Ti sei dimenticato il return
return div;
}
</script>

<div id="qui">
<script type="text/javascript">
var div = document.getElementById("qui");
oggetto = new Oggetto(div, 200, 100);
</script>
</div>

satoshi2005
15-01-2008, 10:29
Beh per tanto così ci metto meno a fare così:


<script type="text/javascript">
function Oggetto(elementId, width, height) {
var div = document.createElement('div');
div.style.width = width + "px";
div.style.height = height + "px";
div.style.backgroundColor = "#cccccc";

document.getElementById(elementId).appendChild(div);
}
</script>

<div id="qui">
<script type="text/javascript">
oggetto = new Oggetto("qui", 200, 100);
</script>
</div>


No? Il fatto è che vorrei che fosse dinamico, che lo inserisca dove c'è "new Oggetto" senza dovergli dire il div nella quale è contenuto (serev un modo per fare in modo che lui sappia da solo dov'è contenuto lo script!)

Grazie..

ReaToMe
15-01-2008, 12:23
Mi sorge spontanea una domanda:
A che ti serve?

satoshi2005
15-01-2008, 21:42
Mi sorge spontanea una domanda:
A che ti serve?
Perché è comodo fare "new Oggetto" senza dover fare ad esempio

var questo = new Oggetto(...);
document.write(questo.codice);

Il fatto è che non posso usare il document.write perché se lo uso gli eventi non funzionano. Mi spiego:

<script type="text/javascript">
function Oggetto(elementId, width, height) {
var container = document.createElement("div");

var div = document.createElement('div');
div.style.width = width + "px";
div.style.height = height + "px";
div.style.backgroundColor = "#cccccc";
div.onclick = function (e) {
alert("Cliccato!");
}

container.appendChild(div);

// Nei seguenti casi l'evento...
document.write(container.innerHTML); // non funziona
document.getElementById("qui").appendChild(container); // funziona
}
</script>

<div id="qui">
<script type="text/javascript">
oggetto = new Oggetto("qui", 200, 100);
</script>
</div>


Spero di essermi spiegato..

Grazie, sato