0
votes

Si la déclaration affichant un message NAN au lieu d'alerte personnalisée

J'ai une instruction IF qui vérifie si un chiffre entre l'utilisateur est un nombre entre 0 et le dernier index d'une matrice. Lorsque je saisi quelque chose d'autre qu'un chiffre, au lieu d'aller à la partie "d'autre" du code et d'afficher le message d'alerte, il affiche "Nan". XXX


3 commentaires

isnan () ne suffit pas. Vous devez convertir activement la valeur en un numéro avant de la comparer à d'autres numéros; Invite () retourne toujours une chaîne.


Donc, je ferais var Taskindex = parseint (invite ("Veuillez entrer le numéro d'index de la tâche à supprimer.", 0)) ?


Je ne suis pas un fan de parseint () car il permet des chaînes comme "123foo" sans erreur. Cependant, sinon cela fonctionnerait.


3 Réponses :


0
votes

Parce que vous souhaitez utiliser la valeur entrée en tant que numéro, tandis que Invite () code> retourne toujours une chaîne, vous devez une étape supplémentaire pour convertir la réponse rapide à un numéro:

(("Please enter a number between 0 and " + tasks.length) - 1) + "."


5 commentaires

J'ai ajouté la ligne de code, mais il affiche toujours "Nan" au lieu de l'alerte que j'ai spécifiée.


Qu'est-ce que displaytasklist () faire?


Fondamentalement, un tableau de "tâches" est affiché dans une liste et la fonction Supprimer (répertoriée ci-dessus) supprime cette tâche de la liste et de la matrice. Displaytasklist () Il suffit de réafficher la liste dans ce tableau avec l'index spécifié supprimé de la matrice. Il n'affiche aucune alerte.


J'ai testé quelque chose et apparemment «Tâches) Longueur-1» était le problème, je devais le mettre entre parenthèses.


@coreynj oui exactement!



0
votes

invite () code> retourne toujours une chaîne.

La soustraction tentera de contraindre des chaînes en chiffres, de sorte que d'une manière à corriger cela consiste à garantir que cela se produise avant l'addition (concaténation) dans le Reste de l'alerte: p>

p>

let tasks = {length: "5"}

alert("Please enter a number between 0 and " + tasks.length-1 + ".");


2 commentaires

Merci pour cela, j'avais toujours pensé que la parenthèse n'était nécessaire que s'il y avait plusieurs arguments. Je pensais que des parenthèses étaient facultatives avec de simples expressions arithmétiques.


Les parenthèses contrôlent l'ordre des opérations, comme dans les équations mathématiques. J'ai élargi la réponse un peu pour expliquer ce qui se passe plus en détail.



0
votes

Le problème est que vous avez une chaîne, vous devez convertir le numéro Taskindex avec numéro (TaskIndex)


0 commentaires