while (wight>0);
セミコロンは効果的にそのループを作成します。wight が 0 より大きい間は何もしません。これにより、無限ループが強制されます。これが、コードの残りの部分が実行されない理由です。
また、'wight' は'weight' と同じではありません。これは別のエラーです。
さらに、その行を に変更するとwhile (weight > 0)
、その後実行されるコードは「重み」を変更しないため、無限ループが発生します。したがって、常に0 よりも大きくなります (0 未満の数値が入力された場合を除きます)。この場合、まったく実行されません)。
あなたが望むのは:
var weight;
weight=parseInt(prompt("Please, enter weight")); // Missing parenthesis
// Those two lines can be combined:
//var weight = parseInt(prompt("Please, enter weight"));
while(weight>0)
{
if (weight>199 && weight<300)// REMOVE semicolon - has same effect - 'do nothing'
{
document.write("Tax will be" + weight*5);
// above string probably needs to have a space at the end:
// "Tax will be " - to avoid be5 (word smashed together with number)
// Same applies below
}
else
{
document.write("Tax will be" + weight*10);
}
}
それは構文的に正しいです。無限ループを回避するには、while 条件を変更するか、そのループ内の「重み」を変更する必要があります。