2010-06-06 6 views
22

Comment afficher la valeur d'une variable en javascript dans une zone d'alerte? Par exemple j'ai une variable x = 100 et alert (x) ne fonctionne pas. Par exemple, j'ai une variable x = 100.alerter une valeur de variable

le script utilisé dans la graisse de singe est ici

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) 

    } 
} 
+4

montrez-nous ce que vous avez fait, y compris html. –

+1

Votre question manque beaucoup de détails. –

+1

Hors sujet, mais je pense que cela vous aiderait probablement à prendre un bon livre sur Javascript. Je pensais que le * Javascript: The Definitive Guide * de Flanagan était assez bon, mais vraiment, vous avez beaucoup de choix en termes de livres JS à ce stade. :-) –

Répondre

17

Quelques choses:

  1. Vous ne pouvez pas utiliser new comme nom de variable, il est un mot réservé.
  2. Sur les éléments input, vous pouvez simplement utiliser la propriété value directement, vous ne devez pas passer par getAttribute. L'attribut est "reflété" en tant que propriété.
  3. Idem pour name.

Alors:

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); 
    } 
} 
+1

Le premier point que vous avez fait est correct. Cependant, vous n'avez * pas * besoin d'utiliser 'getAttribute' pour saisir des valeurs. 'input.value' et' input.name' fonctionnent très bien. –

+2

@Delan: C'est ce que j'ai dit, et c'est ce que mon exemple de réécriture fait. –

+1

merci. Le problème était avec le nouveau mot-clé. S'il y a quatre boutons radio et l'un de ceux-ci est la valeur retournée dans "myvalue" variable comment puis-je vérifier cette valeur particulière – technocrat

2

Si vous utilisez Greasemonkey, il est possible que la page n'est pas prêt pour le javascript encore. Vous devrez peut-être utiliser window.onReady.

var inputs; 

function doThisWhenReady() { 
    inputs = document.getElementsByTagName('input'); 

    //Other code here... 
} 

window.onReady = doThisWhenReady; 
6

Note, alors que les réponses ci-dessus sont corrects, si vous voulez, vous pouvez faire quelque chose comme:

alert("The variable named x1 has value: " + x1); 
1
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); }} 
1

show zone d'alerte avec la variable d'utilisation avec un message

<script> 
$(document).ready(function() { 
var total = 30 ; 
alert("your total is :"+ total +"rs"); 
}); 
</script> 
1

Si je comprends bien votre question et votre code, alors je veux d'abord mentionner trois choses avant de partager mon code/version d'une solution. Tout d'abord, pour name et value vous ne devriez probablement pas utiliser la méthode getAttribute() car ils sont, eux-mêmes, propriétés de (la variable nommée) inputs (à un index donné de i). Deuxièmement, la variable que vous essayez d'alerter est l'une des quelques termes choisis en JavaScript qui sont désignés comme «mots-clés réservés» ou simplement «mots réservés». Comme vous pouvez le voir dans/sur cette liste (sur le lien), new est clairement un mot réservé dans JS et ne devrait jamais être utilisé comme nom de variable. Pour plus d'informations, il suffit de google "mots réservés en JavaScript". Troisièmement et finalement, dans votre déclaration d'alerte elle-même, vous avez omis d'inclure un point-virgule. Cela et cela seul peut parfois être suffisant pour que votre code ne fonctionne pas comme prévu. [A part: Je ne dis pas cela comme un conseil mais plutôt comme une observation: JavaScript pardonnera presque toujours et permettra d'avoir trop de points virgules inutiles et/ou inutiles, mais généralement JavaScript est également sinon plus impitoyable si (quand) points-virgules nécessaires et requis. Par conséquent, la meilleure pratique est, bien sûr, d'ajouter les points-virgules uniquement à tous les points requis et de les exclure dans toutes les autres circonstances. Mais en pratique, en cas de doute, cela ne nuira probablement pas aux choses en ajoutant/en ajoutant un supplément, mais cela nuira en ignorant celui qui est obligatoire. Les règles générales sont toutes les déclarations et les assignations se terminent par un point-virgule (comme les affectations de variables, les alertes, les instructions console.log, etc.) mais pas toutes les expressions (comme les boucles, les boucles, les expressions de Je digresse..

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(); 

PS: Vous avez utilisé un opérateur double affectation dans votre déclaration conditionnelle, et dans ce cas, il n'a pas d'importance puisque vous comparez des chaînes, mais en général je crois que l'opérateur triple mission est la voie à suivre et plus précis car cela permettrait de vérifier si les valeurs sont EQUIVALENT SANS TYPE CONVERSION, ce qui peut être très important pour d'autres instances de comparaison, il est donc important de le signaler. Par exemple, 1 == "1" et 0 == false sont tous les deux vrais (quand vous voudriez que ceux-ci retournent faux parce que la valeur à gauche n'était pas la même que la valeur à droite, sans conversion de type) mais 1 === "1" et 0 === faux sont faux tous les deux car l'opérateur triple ne compte pas sur la conversion de type lors des comparaisons. Gardez cela à l'esprit pour l'avenir.

Questions connexes