|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
[JavaScript] Domanda facile
Codice:
<!DOCTYPE html>
<html>
<body>
<h1>My First JavaScript</h1>
<p id="yo">Please input a number.</p>
<input id="demo" type="text">
<script>
function myFunction()
{
var x=document.getElementById("demo").value;
if(x==""||isNaN(x))
{
alert("Not Numeric");
return;
}
var v = document.getElementById("yo");
v.innerHTML = "PD";
}
</script>
<button type="button" onclick="myFunction()">Click Me!</button>
</body>
</html>
Codice:
var v = document.getElementById("yo").innerHTML;
v = "PD";
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Se si potesse fare quello che dici tu, allora servirebbe un metodo alternativo per leggere il valore di una proprietà, intendo a livello di linguaggio.
Codice:
var v = document.getElementById("yo").innerHTML;
v = "PD";
Codice:
var v = document.getElementById("yo");
v.innerHTML = "PD";
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quindi, parlando in C++ese visto che vengo da linguaggi compilati, gli oggetti non si copiano, si passano solo per reference, mentre le loro proprietà si copiano per valore, correct?
Sarebbe Codice:
string v = document.getElementById("yo").innerHTML;
v = "PD";
Codice:
DOMHeader& v = document.getElementById("yo");
v.innerHTML = "PD";
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
C++ non lo conosco mi dispiace...
Comunque secondo me sta storia del passaggio per reference o per valore è l'invenzione di qualcuno che pensava di rendere la cosa più comprensibile ai suoi studenti e invece ha generato un sacco di confusione... Non mi sto riferendo al C++, magari lì ha senso, ma penso a Java, C#, Javascript... O forse è l'eredità del C++ portata negli altri linguaggi ma secondo me se ne fa volentieri a meno. Il passaggio è sempre per valore, ma a volte il valore è un riferimento, altre volte è un valore primitivo. Nel tuo caso anche InnerHtml contiene un riferimento, ad un oggetto String in particolare, ma esso è immutabile e come tale non lo puoi modificare tramite i suoi metodi e proprietà. Quindi lo sovrascrivi, però non stai sovrascrivendo InnerHtml, ma il riferimento all'oggetto a cui esso (InnerHtml) puntava che avevi salvato nella tua variabile. Invece nel caso funzionante, ottieni il riferimento ad un oggetto mutabile e tramite la sua proprietà InnerHtml lo modifichi. In questo caso il riferimento non cambia e quindi stai agendo sullo stesso oggetto da cui hai ottenuto il riferimento ad InnerHtml. C++ un po' l'avevo studiato ma su un libro delle balle e infatti non ho mai capito come funziona lì la copia di oggetti o il passaggio per valore o riferimento... Non mi ricordo nemmeno quel poco che avevo capito, ma un giorno mi piacerebbe colmare la lacuna |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Allora è come in C#, gli oggetti complessi (class in C#) sono passati/copiati sempre per riferimento, gli oggetti semplici (struct in C#) sono copiati per valore...ho capito cmq, grazie
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:20.



















