2015-11-10 2 views
-2

Мой код не работает, может кто-нибудь, пожалуйста, скажите мне, в чем проблема? Я предполагаю, что это цикл for, но я не могу найти проблему.JAVASCRIPT HELP - код не работает

<html> 
<body> 
<script> 

username = prompt("Please enter a your username:"); 

for (var i = 0; i < username; i++) { 

if(isFinite(username.charAt(i))) { 
result = true; 
document.write("The username consists of one or more numbers." + BR); 
} 
else { 
result = false; 
document.write("The username must consist of one or more numbers." + BR); 
} 
} 

</script> 
</body> 
</html> 
+0

Здравствуйте, убедитесь, что у вас нет никаких синтаксических ошибок. – castle

+0

Вы должны быть более наглядными, что вы хотите получить от нас? вам нужно разместить сообщение с вопросом – TrojanMorse

+0

Когда я ввожу имя пользователя, ничего не появляется. – Nicole

ответ

-1

С выхода я, вероятно, предположим, что вы просто хотите проверить, если username состоит, по меньшей мере, один ряд, на самом деле: цифры.

// iterate over the input 
for (var i = 0; i < username.length; i++) { 
    // check if it is a number (not a digit but that's the same here) 
    if (isFinite(username.charAt(i))) { 
    result = true; 
    // The requirement "one or more numbers" is fulfilled, 
    // we can break out of the loop 
    break; 
    } 
    else { 
    result = false; 
    } 
    // print something according to "result" 
    if(result === true){ 
    document.write('The username consists of one or more numbers.'); 
    } else { 
    document.write('The username must consist of one or more numbers.'); 
    } 
} 

Вы должны пройти по всей длине строки, чтобы узнать, есть ли нет номера, но если вы не хотите, чтобы выяснить, есть ли любого количество в нем.

Теперь, если вы хотите протестировать, если он состоит из только цифр, вы должны изменить требования, они уже слишком неоднозначны.

Дополнительные советы:

  • вам нужно проверить вход, то всегда должны проверить пользовательский ввод!

  • Вы должны знать, что строки JavaScript - это UTF16. Редко проблема, но легко получается, если вы перебираете строки JavaScript.

  • String.charAt() возвращает символ, а не число. Не полагайтесь на автоматические преобразования в JavaScript, вы слишком легко стреляете в ногу, если полагаетесь на нее, но если вы этого не сделаете, будьте осторожны.

  • , пожалуйста, не используйте document.write, используйте либо консоль, если она доступна, либо измените текстовый узел элемента HTML.

С этих точек в виду, вы можете получить что-то вроде этого:

// make a list of digits 
var digits = ['0','1','2','3','4','5','6','7','8','9']; 
// ask the user for a username 
var username = prompt("Please enter a your username:"); 
// check input 
if (username.length === 0) { 
    console.log('no username given'); 
} else { 
    for (var i = 0; i < username.length; i++) { 
    // indexOf searches for the same type, that's why the digits above 
    // are strings with quotes around them 
    if (digits.indexOf(username.charAt(i)) >= 0) { 
     result = true; 
     // The requirement "one or more numbers" is fullfilled, 
     // we can break out of the loop 
     break; 
    } 
    else { 
     result = false; 
    } 
    } 
    // print something according to "result" 
    if (result === true) { 
    console.log('The username consists of one or more numbers.'); 
    } else { 
    console.log('The username must consist of one or more numbers.'); 
    } 
} 

Выше один вариант много и легко может привести к острой дискуссии на некоторых форумах (не здесь! Конечно, нет! ;-)), но я надеюсь, что это поможет.

+0

Два downvotes, без причины. Что я должен делать, удалить принятый ответ? – deamentiaemundi

0

У вас есть две проблемы в вашем коде:

  1. В течение цикла, используйте длину переменной, чтобы установить условие останова

    для (вар я = 0; я < username.length; я ++)

  2. BR не определен

Рабочий код: http://jsfiddle.net/f643fr4w/

+0

Теперь он просто печатает« Имя пользователя состоит из одного или нескольких номеров ». кучу раз. Если имя пользователя составляет 8 букв, оно будет напечатано 8 раз. – Nicole

+0

Вы не указали требуемое поведение, поэтому я просто дал вам минимум для вашего кода, чтобы «работать» (бежать, фактически). Вы должны посвятить litle больше времени на редактирование своего вопроса, так что нам ясно, что вам нужно. Теперь, когда я думаю, я не должен был дать вам ответ ... –

-1

Использование регулярных выражений для таких махинаций:

var username = prompt("username plz kk thx"); 
var result = /[0-9]/.test(username); 
document.write("The username " + (result ? "consists" : "must consist") + " of one or more numbers");