Le Bouton Radio de la production de valeur non définie en fonction javascript
Je suis en train d'envoyer la valeur d'un bouton radio à une fonction javascript. Finalement, la fonction va faire plus mais mon test, il en est arrivé à une impasse parce que je reçois en retour une valeur undefined. Voici ce que j'ai:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 1</title>
<SCRIPT TYPE="text/javascript">
<!--
function jobWindow(){
var target;
for( i = 0; i < document.jobView.sales.length; i++ ){
if( document.jobView.sales[i].checked == true )
target = document.jobView.sales[i].value;
break;
}
alert( "val = " + target );
//var load = window.open('target','','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,location=no,status=no');
}
//-->
</script>
</head>
<body>
<form name="jobView">
<input name ="sales" value="all" type="radio" />All
<input name="sales" value="darell" type="radio" />Darell
<input name="sales" value="kevin" type="radio" />Kevin
<input name="sales" value="brad" type="radio" />Brad
<input name="sales" value="chongo" type="radio" />Chongo
<input type="button" value="View Records" onclick="jobWindow()"/>
<input type="button" value="View Calendar" />
</form>
</body>
</html>
Vous devez vous connecter pour publier un commentaire.
Essayer avec
document.getElementsByTagName
comme ceci:Note également que votre
break
ligne jamais exécuté parce qu'il vous manque des accolades:Le chemin d'accès que vous voulez vraiment est:
La droite dot de la chaîne (le document.jobView.les ventes) fait un appel implicite à la "totalité" de la collection, qui ne fonctionne que sous IE. (Oui, je sais que Firefox renvoie à l'identique-à la recherche de la chaîne dans sa console d'erreur quand les choses vont mal, mais vous ne pouvez pas l'utiliser dans votre propre code.) getELementsByTagName() et getElementsByName() fonctionne très bien, mais alors vous devez vous assurer que les éléments dans la collection renvoyée sont ceux que vous voulez vraiment. (Supposons qu'un temps viendra où vous souhaitez créer plus d'un formulaire sur la page, et que les noms de champ qui s'entrechoquent. Cela n'arrivera jamais, bien sûr, à moins que vous ne parviennent pas à faire une telle supposition hors de la porte, après quoi un autre développeur d'ajouter immédiatement un second formulaire à la page que vous venez de commis.)
changement document.jobView.vente à
document.getElementsByName('sales')
jeter un peu de débogage là. par exemple mettre un alert() à l'intérieur de la for() instruction pour s'assurer qu'il est de trouver une définition pour
document.jobView.sales.length
.Si ça n'a pas l'alerte, vous pouvez presque pari
document.jobView.sales.length
est pas défini.Vous pouvez ensuite faire
try { var length = document.jobView.sales.length; } catch(e) { alert(e); }
pour vérifier cela.Si vous vérifiez que
document.jobView.sales.length
n'est pas défini, vous pourriez avoir à utiliserdocument.getElementsByTagName
, et la boucle à travers eux, au lieu dedocument.jobView