|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2009
Città: Milano
Messaggi: 270
|
[Javascript] replaceChild non rimpiazza ma aggiunge l'elemento
Ciao, sono da poco alle prese con Javascript e alcuni problemi che possono sembrare banali sono difficilmente valicabili per me.
Il problema è che la funzione che trovate in basso non rimpiazza l'elemento old ma ne aggiunge un'altro. Ho provato anche a cancellare l'elemento vecchio e appendere quello nuovo ma non funziona. Che posso fare? Grazie mille. PS Lo script è posto alla fine di body Codice:
Tableau.prototype.go = function(resultPlaceId)
{
var resultPlace = document.getElementById(resultPlaceId);
if (typeof resultPlace == undefined) return null;
var res = this.solve();
var str = 'Optimum found';
var div = document.createElement('div');
div.setAttribute('id', 'step_panel');
if (res == undefined)
{
h3 = document.createElement('h3');
h3.innerHTML = 'Wrong input!!';
h3.setAttribute('id', 'result_place');
div.appendChild(h3);
if (old == null)
resultPlace.appendChild(div);
else
{
old = old.parentNode.replaceChild(div, old);
}
return;
}
if (res == false)
str = 'Unlimited';
for (var s = 0; s < this.steps.length; s++)
{
div.appendChild(this.steps[s]);
}
var h3 = document.createElement('h3');
h3.setAttribute('id', 'result_place');
h3.innerHTML = str;
div.appendChild(h3);
var old = document.getElementById('step_panel');
if (old == null)
resultPlace.appendChild(div);
else
{
old = old.parentNode.replaceChild(div, old);
}
}
__________________
AMD PII x4 955 BE | Sapphire HD4850 Vapor-X 1 GB | Samsung SpinPoint F1 500GB | Samsung EcoGreen F4 2TB Gigabyte GA-MA790FXT-UD5P | Fractal Design Define R3 USB3.0 Titanium Grey | CORSAIR 650W CMPSU-650TX Noctua U12P SE2 | 2 x 2GB Kingston 1333 MHz | Samsung SyncMaster P2450 | Samsung SyncMaster T200 Ultima modifica di __ZERO_UNO__ : 28-08-2011 alle 18:14. Motivo: Ho modificato il codice. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 258
|
ma qui aggiungi il div 2 volte? Old dovrebbe essere sicuramente null visto che ancora non era stato dichiarato
Codice:
if (old == null)
resultPlace.appendChild(div);
else
{
old = old.parentNode.replaceChild(div, old);
}
resultPlace.appendChild(div);
return;
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jul 2009
Città: Milano
Messaggi: 270
|
Hai ragione. Prima ho modificato il codice al volo e mi è sfuggito. Ma la cosa davvero strana è che con o senza quell'istruzione non cambia nulla.
Provando appare solo una volta l'<h3> wrong input.
__________________
AMD PII x4 955 BE | Sapphire HD4850 Vapor-X 1 GB | Samsung SpinPoint F1 500GB | Samsung EcoGreen F4 2TB Gigabyte GA-MA790FXT-UD5P | Fractal Design Define R3 USB3.0 Titanium Grey | CORSAIR 650W CMPSU-650TX Noctua U12P SE2 | 2 x 2GB Kingston 1333 MHz | Samsung SyncMaster P2450 | Samsung SyncMaster T200 |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 258
|
ma te lo duplica solo quando res è undefined?
se così fosse credo che tu ti sia solo dimenticato di definire chi è old, pertanto lo trova sempre null. Ti basterebbe aggiungere: Codice:
var old = document.getElementById('step_panel');
Codice:
div.appendChild(h3);
var old = document.getElementById('step_panel');
if (old == null)
resultPlace.appendChild(div);
else
{
old = old.parentNode.replaceChild(div, old);
}
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jul 2009
Città: Milano
Messaggi: 270
|
Si, quello era uno dei bug della funzione. L'ho sistemato e ho sistemato anche un'altro fondamentale bug che avevo in un'altra funzione. Ora sono riuscito a farlo funzionare a dovere. Grazie mille a tutti voi dell'aiuto.
Se volete veder il risultato
__________________
AMD PII x4 955 BE | Sapphire HD4850 Vapor-X 1 GB | Samsung SpinPoint F1 500GB | Samsung EcoGreen F4 2TB Gigabyte GA-MA790FXT-UD5P | Fractal Design Define R3 USB3.0 Titanium Grey | CORSAIR 650W CMPSU-650TX Noctua U12P SE2 | 2 x 2GB Kingston 1333 MHz | Samsung SyncMaster P2450 | Samsung SyncMaster T200 |
|
|
|
|
|
#6 | |
|
Member
Iscritto dal: Oct 2005
Messaggi: 258
|
Quote:
carino comunque il risultato, ma avrei messo le tabelle del risultato non modificabili dall'utente. Ciao ciao |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jul 2009
Città: Milano
Messaggi: 270
|
Vero. Lo metto in lista con le cose da aggiungere.
PS Fatto! E grazie per il tuo parere.
__________________
AMD PII x4 955 BE | Sapphire HD4850 Vapor-X 1 GB | Samsung SpinPoint F1 500GB | Samsung EcoGreen F4 2TB Gigabyte GA-MA790FXT-UD5P | Fractal Design Define R3 USB3.0 Titanium Grey | CORSAIR 650W CMPSU-650TX Noctua U12P SE2 | 2 x 2GB Kingston 1333 MHz | Samsung SyncMaster P2450 | Samsung SyncMaster T200 Ultima modifica di __ZERO_UNO__ : 29-08-2011 alle 15:19. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:10.



















