2017-08-31 5 views
0

Mes boîtes de dialogue ne fonctionnent pas? Depuis que j'ai mis dans l'élément il n'y a pas de travail.Créer une page Web avec des invites

J'ai besoin de boîtes de prompteurs pour que je puisse saisir des informations et que ces informations soient automatiquement placées dans une table, puis lisent automatiquement la plus grande quantité de $ en ayant un * dans la rangée de la table. Je ne suis pas à 100% sur le codage js alors ne rigolez pas si c'est une solution simple (ce sont les choses simples qui me font).

Ceci est mon code, je ne sais pas ce que je l'ai fait mal

« ma table est dans la tête »

function money(){ 

this.currency = ""; 
this.amount = ""; 
this.exchangeRate = ""; 
this.ausDollars = ""; 

tbody = document.getElementsByTagName('tbody')[0]; 
for (var i = 0; i <= 3; i++) 
    trElement = document.createElement('tr'); 
    tbody.appendChild(trElement); 

// Read the 3 letter currency abbreviation entered 
    currency = prompt('Please enter a 3-letter currency abbreviation', +i, ""); 
    // If the input data is invalid ask the user to re-enter it 
    while (currency.length != 3) { 
    currency = prompt('Currency abbreviation was not entered', ""); 
    currency = parseFloat(currency); 
    } 

currencyTH = document.createElement('th'); 
    currencyText = document.createTextNode(currency); 
    currencyTH.appendChild(currencyText); 
    trElement.appendChild(currencyTH); 

// Read the amount and convert it to entered currency 
    amount = prompt('Please enter an amount of money in that currency', +i, ""); 
    // If the input data is invalid ask the user to re-enter it 
    while (isNaN(amount) || amount < 0) { 
    amount = prompt('An amount of money was not entered') 
    amount = parseFloat(amount); 
    } 

amountTH = document.createElement('th'); 
    amountText = document.createTextNode(amount); 
    amountTH.appendChild(amountText); 
    trElement.appendChild(amountTH); 

exchangeRateTH = document.createElement('th'); 
    exchangeRateText = document.createTextNode(exchangeRate); 
    exchangeRateTH.appendChild(exchangeRateText); 
    trElement.appendChild(exchangeRateTH); 

} 
+0

vous avez une boucle for qui crée un trElement 4 fois. mais seulement faire quelque chose avec le dernier. Je suppose que votre boucle for ressemble plus à 'pour (var i = 0; i <= 3; i ++) {' remarquez l'accolade, vous aurez bien sûr besoin d'une autre accolade de fermeture à la fin de votre boucle for. – Keith

+0

J'ai donc l'accolade fermante après tbody.appendChild (trElement); comme ça? tbody = document.getElementsByTagName ('tbody') [0]; Pour (var i = 0; i <= 3; i ++) { \t trElement = document.createElement ('tr'); \t tbody.appendChild (trElement); \t} – Claire

Répondre

1

Le problème est que vous utilisez prompt() à les deux invitent l'utilisateur à saisir les messages d'erreur et en relation avec l'entrée de l'utilisateur. Pour cela, vous recherchez alert().

d'abord vous définissez la monnaie dans une invite avec:

currency = prompt('Please enter a 3-letter currency abbreviation', +i, ""); 

Ensuite, vous exécutez:

currency = prompt('Currency abbreviation was not entered', ""); 

Cette écrase la valeur qui a été initialement stockée dans currency, de sorte que vous ne pouvez pas exécutez parseFloat() dessus sur la ligne suivante:

currency = parseFloat(currency); 

Pour résoudre ce problème, utilisez:

alert('Currency abbreviation was not entered'); 

Notez que ce cas est le même pour amount. Au lieu de:

amount = prompt('An amount of money was not entered'); 

Utilisation:

alert('An amount of money was not entered'); 

Notez également que la structure de votre boucle while est un peu mal pour inciter indéfiniment jusqu'à ce qu'une valeur correcte est satisfaite. Au lieu de vous demander au départ et d'exécuter votre boucle while, vous devez définir une variable en dehors de la boucle, puis vérifier la condition. Et le parseFloat()doit sortir de la boucle while, sinon vous serez coincé dans une boucle indéfinie!

var currency = ''; 
 
currency = prompt("Please enter 3 characters"); 
 
while (currency.length != 3) { 
 
    alert('Currency must be three characters'); 
 
    currency = prompt("Please enter 3 characters"); 
 
} 
 
currency = parseFloat(currency); 
 

 
console.log("The stored value was: " + currency);

Hope this helps! :)

+0

Salut, puis-je faire cela pour le montant et l'échange? – Claire

+0

@Claire - Oui, vous devrez pour que cette invite fonctionne correctement =] –

+0

comme ça? var quantité = ''; \t while (isNaN (montant) || amount <0) { alert ('Une somme d'argent n'a pas été saisie') } amount = parseFloat (montant); console.log ("La valeur enregistrée était:" + montant); var exchangeRate = ''; \t while (isNaN (exchangeRate) || exchangeRate <0) { alert ('Taux de change n'a pas été saisi', ""); } \t exchangeRate = parseFloat (exchangeRate); console.log ("La valeur stockée était:" + exchangeRate); – Claire