jpo
Tengo una función de JavaScript a la que le paso un parámetro. El parámetro representa la identificación de un elemento (un campo oculto) en mi página web. Quiero cambiar el valor de este elemento.
function myFunc(variable) {
var s = document.getElementById(variable);
s.value="New value"
}
Cuando hago esto, aparece un error que indica que el valor no se puede establecer porque el objeto es nulo. Pero sé que el objeto no es nulo porque lo veo en el código HTML generado por el navegador.
De todos modos, probé el siguiente código para depurar
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"
}
Cuando aparece el mensaje de alerta, ambos parámetros son iguales, pero sigo recibiendo el error. Pero todo funciona bien cuando lo hago.
var s = document.getElementById('This-is-the-real-id');
s.value="New value"
¿Cómo puedo arreglar esto?
El elemento para el que estoy configurando el valor es un campo oculto y la identificación se establece dinámicamente, a medida que se carga la página. He intentado agregar esto en el $(documento).listo función, pero no funcionó.
Xiaodan Mao
Si miFunc(variable) se ejecuta antes de que el área de texto se represente en la página, obtendrá el error de excepción nula.
<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 -->
Por lo tanto, asegúrese de que su área de texto exista en la página y luego llame miFunc. Puedes usar el ventana.onload o $(documento).listo función.
-
Creo el campo oculto y luego creo el botón que ejecuta la función que establece el valor del campo oculto. Sin embargo, la identificación se establece dinámicamente. Intenté agregar esta función en la función $(document).ready pero surge el mismo problema.
– jpo
1 de febrero de 2013 a las 15:37
-
@jpo Si la identificación se establece dinámicamente, también debe asegurarse de que se llame a myFunc después de establecer la identificación. Puede intentar llamar a myFunc en la función que establece la identificación.
– Xiaodan Mao
1 de febrero de 2013 a las 15:47
-
Mi código se ve así @Html.HiddenFor(m => m.myfield, new{id = “myId”}) .
– jpo
1 de febrero de 2013 a las 15:57
-
La función solo se llama cuando se hace clic en el botón y esto solo sucede después de que se carga la página. ¿De qué otra manera puedo asegurarme de que todo suceda antes de que se haga clic en el botón?
– jpo
1 de febrero de 2013 a las 15:58
-
@jpo En onclick=”javascript: myFunc(myID)”, myID debe estar entre comillas simples.
– Xiaodan Mao
1 de febrero de 2013 a las 16:05
mplungjan
Dado
<div id="This-is-the-real-id"></div>
entonces
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");
}
hará lo que quieras
Dado
<input id="This-is-the-real-id" type="text" value="">
entonces
function setValue(id, newvalue) {
var s = document.getElementById(id);
s.value = newvalue;
}
window.onload = function() {
setValue("This-is-the-real-id", "Hello there");
}
hará lo que quieras
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="">
-
Exactamente lo que pensé. Pero mi identificación y se establece dinámicamente. Pero usé la misma idea. Pero cuando se llama a la función I, el documento no puede encontrar el elemento con la identificación especificada
– jpo
1 de febrero de 2013 a las 15:18
-
Necesitamos ver el html y el controlador de eventos (onclick o lo que sea)
– mplungjan
1 de febrero de 2013 a las 15:18
Aiyion.Prime
Ninguna respuesta planteó la posibilidad de utilizar .setAttribute()
además de .value()
:
document.getElementById('some-input').value="1337";
document.getElementById('some-input').setAttribute("value", "1337");
Este apéndice en realidad cambia el contenido del valor en la fuente de las páginas, lo que a su vez hace que el valor se actualice. form.reset()
-prueba.
-
¿Brusco? ¿O simplemente me perdí una regla SO aquí?
– Aiyion.Prime
19 de marzo a las 17:19
dah moymy
Usar:
<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>
darlan dieterich
Para cada tipo de elemento, puede usar un atributo específico para establecer el valor.
P.ej:
<div id="theValue1"></div>
window.document.getElementById("theValue1").innerText = "value div";
<input id="theValue2"></input>
window.document.getElementById("theValue2").value = "value input";
Pedro Mortensen
Pruébalo como a continuación. Funcionará…
<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>
Pedro Mortensen
Creo que el problema es la forma en que llamas a tu función de JavaScript.
Tu código es así:
<input type="button" onclick="javascript: myFunc(myID)" value="button"/>
mi identificación debe estar entre comillas.
-
El
javascript:
la etiqueta es completamente innecesaria– mplungjan
17 de octubre de 2018 a las 5:56
Veamos dónde llamas a la función (que, a juzgar por el código que has proporcionado, no tiene nombre).
–Anthony Grist
1 de febrero de 2013 a las 15:09
que es variable ¿Y cómo llamas a la función sin nombre?
– mplungjan
1 de febrero de 2013 a las 15:09
Cuando haces un diagnostico
alert()
oconsole.log()
En casos como este, debe siempre envuelva los valores con algunos caracteres de marcador para que pueda saber si hay caracteres de espacio perdidos en las cadenas. Entonces:alert("[" + x + "], [" + y + "]");
– Puntiagudo
1 de febrero de 2013 a las 15:12
Muestre un ejemplo de que esto suceda en jsfiddle.net: lo que está preguntando realmente no tiene sentido.
-Dennis
1 de febrero de 2013 a las 15:17