javascript - chrome - greasemonkey tutorial
alertar un valor variable (6)
Mostrar cuadro de alerta con uso variable con mensaje
<script>
$(document).ready(function() {
var total = 30 ;
alert("your total is :"+ total +"rs");
});
</script>
¿Cómo muestro el valor de una variable en javascript en un cuadro de alerta?
Por ejemplo, tengo una variable x = 100 y alerta (x) no funciona.
El script usado en Grease Monkey está aquí.
var inputs = document.getElementsByTagName(''input'');
var new;
for (i=0; i<inputs.length; i++) {
if (inputs[i].getAttribute("name") == "ans") {
new=inputs[i].getAttribute("value"));
alert(new)
}
}
Si entiendo su pregunta y código correctamente, primero quiero mencionar tres cosas antes de compartir mi código / versión de una solución. Primero, tanto para el name
como para el value
, probablemente no debería usar el método getAttribute()
porque son, en sí mismos, propiedades de las inputs
(la variable nombrada) (en un índice dado de i
). En segundo lugar, la variable que está intentando alertar es uno de los pocos términos seleccionados en JavaScript que se designan como "palabras clave reservadas" o simplemente "palabras reservadas". Como puede ver en / en esta lista (en el enlace), claramente es una palabra reservada en JS y nunca debe usarse como nombre de variable. Para obtener más información, simplemente busque en google ''palabras reservadas en JavaScript''. En tercer y último lugar, en su declaración de alerta, olvidó incluir un punto y coma. Eso y eso solo a veces puede ser suficiente para que su código no se ejecute como se espera. [Aparte: no estoy diciendo esto como un consejo, sino más bien como una observación: JavaScript casi siempre perdonará y permitirá tener demasiados puntos y coma o puntos de información innecesarios, pero en general, JavaScript también es igual o más despiadado si / cuando falta (cualquiera de los ) necesario, punto y coma requerido. Por lo tanto, la mejor práctica es, por supuesto, agregar los puntos y coma solo en todos los puntos requeridos y excluirlos en todas las demás circunstancias. Pero prácticamente hablando, en caso de duda, es probable que no dañe las cosas agregando / incluyendo una extra, pero duele ignorando una obligatoria. Las reglas generales son todas las declaraciones y las asignaciones terminan con un punto y coma (como asignaciones de variables, alertas, declaraciones de console.log, etc.) pero la mayoría / todas las expresiones no (como para los bucles, los bucles, las funciones funcionan solo diciendo.) Pero Estoy divagando ..
function whenWindowIsReady() {
var inputs = document.getElementsByTagName(''input'');
var lengthOfInputs = inputs.length; // this is for optimization
for (var i = 0; i < lengthOfInputs; i++) {
if (inputs[i].name === "ans") {
var ansIsName = inputs[i].value;
alert(ansIsName);
}
}
}
window.onReady = whenWindowIsReady();
PD: utilizó un operador de doble asignación en su declaración condicional, y en este caso no importa ya que está comparando cadenas, pero en general creo que el operador de triple asignación es el camino a seguir y es más preciso, ya que eso comprobaría si Los valores son EQUIVALENTES SIN CONVERSIÓN DE TIPO, lo que puede ser muy importante para otros casos de comparaciones, por lo que es importante señalar. Por ejemplo, 1 == "1" y 0 == falso son verdaderos (cuando generalmente querrá que devuelvan falso ya que el valor de la izquierda no es el mismo que el valor de la derecha, sin conversión de tipo) pero 1 === "1" y 0 === falso son falsos como cabría esperar porque el operador triple no se basa en la conversión de tipo al realizar comparaciones. Tenlo en cuenta para el futuro.
Si está utilizando greasemonkey, es posible que la página aún no esté lista para el javascript. Puede que necesites usar window.onReady.
var inputs;
function doThisWhenReady() {
inputs = document.getElementsByTagName(''input'');
//Other code here...
}
window.onReady = doThisWhenReady;
Tenga en cuenta que, si bien las respuestas anteriores son correctas, si lo desea, puede hacer algo como:
alert("The variable named x1 has value: " + x1);
Un par de cosas:
- No se puede usar
new
como nombre de variable, es una palabra reservada. - En
input
elementos deinput
, solo puede usar la propiedadvalue
directamente, no tiene que pasar porgetAttribute
. El atributo se "refleja" como una propiedad. - Lo mismo para el
name
.
Asi que:
var inputs, input, newValue, i;
inputs = document.getElementsByTagName(''input'');
for (i=0; i<inputs.length; i++) {
input = inputs[i];
if (input.name == "ans") {
newValue = input.value;
alert(newValue);
}
}
var input_val=document.getElementById(''my_variable'');for (i=0; i<input_val.length; i++) {
xx = input_val[i];``
if (xx.name == "ans") {
new = xx.value;
alert(new); }}