J'ai une fonction javascript à laquelle je passe un paramètre. Le paramètre représente l'identifiant d'un élément (un champ caché) dans ma page Web. Je veux changer la valeur de cet élément.
function myFunc(variable){
var s= document.getElementById(variable);
s.value = 'New value'
}
Lorsque je le fais, j'obtiens une erreur indiquant que la valeur ne peut pas être définie car l'objet est null. Mais je sais que l'objet n'est pas nul parce que je le vois dans le code html généré par le navigateur. Quoi qu'il en soit, j'ai essayé le code suivant pour déboguer
function myFunc(variable){
var x = variable;
var y = 'This-is-the-real-id'
alert(x + ', ' + y)
var s= document.getElementById(x);
s.value = 'New value'
}
Lorsque le message d'alerte s'affiche, les deux paramètres sont identiques, mais l'erreur persiste. Mais tout fonctionne bien quand je le fais
var s= document.getElementById('This-is-the-real-id');
s.value = 'New value'
Comment puis-je résoudre ce problème s'il vous plaît
MODIFIER
L'élément pour lequel je règle la valeur est un champ masqué et l'id est détecté dynamiquement, au fur et à mesure du chargement de la page. J'ai essayé d'ajouter ceci dans la fonction $ (document) .ready mais je n'ai pas fonctionné
Si myFunc (variable) est exécuté avant que textarea soit restitué à la page, vous obtiendrez l'erreur d'exception null.
<html>
<head>
<title>index</title>
<script type="text/javascript">
function myFunc(variable){
var s = document.getElementById(variable);
s.value = "new value";
}
myFunc("id1");
</script>
</head>
<body>
<textarea id="id1"></textarea>
</body>
</html>
//Error message: Cannot set property 'value' of null
Donc, assurez-vous que votre zone de texte existe dans la page, puis appelez myFunc, vous pouvez utiliser la fonction window.onload ou $ (document) .ready. J'espère que c'est utile.
Donné
<div id="This-is-the-real-id"></div>
ensuite
function setText(id,newvalue) {
var s= document.getElementById(id);
s.innerHTML = newvalue;
}
window.onload=function() { // or window.addEventListener("load",function() {
setText("This-is-the-real-id","Hello there");
}
fera ce que tu veux
Donné
<input id="This-is-the-real-id" type="text" value="">
ensuite
function setValue(id,newvalue) {
var s= document.getElementById(id);
s.value = newvalue;
}
window.onload=function() {
setValue("This-is-the-real-id","Hello there");
}
fera ce que tu veux
function setContent(id, newvalue) {
var s = document.getElementById(id);
if (s.tagName.toUpperCase()==="INPUT") s.value = newvalue;
else s.innerHTML = newvalue;
}
window.addEventListener("load", function() {
setContent("This-is-the-real-id-div", "Hello there");
setContent("This-is-the-real-id-input", "Hello there");
})
<div id="This-is-the-real-id-div"></div>
<input id="This-is-the-real-id-input" type="text" value="">
<html>
<head>
<script>
function updateTextarea(element)
{
document.getElementById(element).innerText = document.getElementById("ment").value;
}
</script>
</head>
<body>
<input type="text" value="Enter your text here." id = "ment" style = " border: 1px solid grey; margin-bottom: 4px;"
onKeyUp="updateTextarea('myDiv')" />
<br>
<textarea id="myDiv" ></textarea>
</body>
</html>
essayez comme ci-dessous ça va marcher ...
<html>
<head>
<script>
function displayResult(element)
{
document.getElementById(element).value = 'hi';
}
</script>
</head>
<body>
<textarea id="myTextarea" cols="20">
BYE
</textarea>
<br>
<button type="button" onclick="displayResult('myTextarea')">Change</button>
</body>
</html>
Pour chaque type d'élément, vous pouvez utiliser un attribut spécifique pour définir la valeur. Par exemple.:
<div id="theValue1"></div>
window.document.getElementById("theValue1").innerText = "value div";
<input id="theValue2"></input>
window.document.getElementById("theValue2").value = "value input";
Je pense que le problème est la façon dont vous appelez votre fonction javascript. Votre code est comme suit:
<input type="button" onclick="javascript: myFunc(myID)" value="button"/>
myID doit être placé entre guillemets.