2013-05-16 3 views
1

je suit html -JavaScript ne compare pas la valeur du paramètre passé

<input type="Radio" name="radio2text" value="Radiobutton1" 
onclick="javascript:radioWithText('one')" checked="checked" />OneRadio<br/> 
<input type="Radio" name="radio2text" value="Radiobutton2" 
onclick="javascript:radioWithText('two')" unchecked />TwoRadio 
<br/> 
<input type="Radio" name="radio2text" value="Radiobutton2" 
onclick="javascript:radioWithText('three')" unchecked />ThreeRadio 
<br/> 
<input type="Radio" name="radio2text" value="Radiobutton2" 
onclick="javascript:radioWithText('four')" unchecked />FourRadio 

et aussi ce

<span id="one" name="one" width="5px" style="background-color:#fff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> 
<span id="two" name="one" width="5px" style="background-color:#fff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> 
<span id="three" name="one" width="5px" style="background-color:#fff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> 
<span id="four" name="one" width="5px" style="background-color:#fff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> 

Cela produit un petit carré de largeur 4 en blanc sur ma couleur de fond de vert. Ces quatre carrés sont affichés et je veux changer leur couleur de fond hors-cours pour être rouge quand un bouton radio particulier est sélectionné. Pour ce secouer je passe un paramètre avec javascript javascript:radioWithText('one'). Comme vous pouvez le voir la fonction est passée un paramètre ok! Suivant est de faire javascript avec la fonction que j'ai appelée.

function radioWithText(d) { 
    alert(d); 
    if (d.val=='one') 
    { 
     var one = document.getElementById('one'); 
     //one.checked = true; 
     one.style.background="red"; 
    } 
} 

Vous pouvez voir probablement que lorsque le bouton radio est coché, il alerte la valeur transmise (le bouton qui est sélectionné). Dans l'alerte il montre "one""two""three""four" tandis que la même valeur qui est lorsque le premier bouton radio est placé passe "one" par rapport à ne pas comparer ce qui peut être la raison? aide moi!
Désespérément un grand merci d'erreur stupide à l'avance

+2

Il n'y a pas besoin de mettre 'javascript:' dans les gestionnaires d'événements en ligne. – Martijn

+0

Pourquoi alertez-vous 'd' mais comparez' d.val'? Si 'd' est une chaîne, vous devriez comparer' d'; si c'est un élément de formulaire, vous voulez comparer 'd.value'. – apsillers

Répondre

1

d'abord supprimer javascript: des événements inline:

<input type="Radio" name="radio2text" value="Radiobutton1" 
onclick="radioWithText('one')" checked="checked" />OneRadio<br/> 
<input type="Radio" name="radio2text" value="Radiobutton2" 
onclick="radioWithText('two')" unchecked />TwoRadio 
<br/> 
<input type="Radio" name="radio2text" value="Radiobutton2" 
onclick="radioWithText('three')" unchecked />ThreeRadio 
<br/> 
<input type="Radio" name="radio2text" value="Radiobutton2" 
onclick="radioWithText('four')" unchecked />FourRadio 

En second lieu, vous passez une chaîne à votre fonction, donc il n'y a pas de propriété .val. Retirez ce:

function radioWithText(d) { 
    alert(d); 
    if (d == 'one') 
    { 
     var one = document.getElementById('one'); 
     //one.checked = true; 
     one.style.background="red"; 
    } 
} 
+0

merci pour votre aide – Badrinath

1

Supprimez le .val. Votre paramètre est une chaîne, il n'y a pas .val

function radioWithText(d) { 
    alert(d); 
    if (d == 'one') 
    { 
     var one = document.getElementById('one'); 
     //one.checked = true; 
     one.style.background="red"; 
    } 
} 
1

La d variable contient la valeur que vous avez besoin de comparer. Il n'a pas de propriété nommée val.

La ligne de comparaison devrait être:

if (d === 'one') 
0

Pas Val nécessaire.

function radioWithText(d) { 
    alert(d); 
    if (d == 'one') 
    { 
     var one = document.getElementById('one'); 
     //one.checked = true; 
     one.style.background="red"; 
    } 
} 
0

Vous n'avez pas besoin d.val

La variable d est égale à 'one'.

function radioWithText(d) { 
alert(d); 
if (d=='one') 
{ 
    var one = document.getElementById('one'); 
    //one.checked = true; 
    one.style.background="red"; 
    } 
} 

De plus, pas besoin de l'javascript: dans vos onclick événements. onclick des cartes directement à javascript, contrairement à a éléments.

Fiddle here.

Questions connexes