|
|
Модератор форума: JonMagon |
Сообщество uCoz Вебмастеру JavaScript, Flash и прочие технологии JavaScript Помогите разобратся с циклом FOR в JS |
Помогите разобратся с циклом FOR в JS |
Всем привет, короче решил я начать учить язык JavaScript. Потом возьмусь и за jQuery, но это потом.
Так вот, набросал небольшую проверку, которая проверяет, слово занесённое в переменную name. Если в слове есть английские буквы, скрипт выводит что эти буквы запрещены. Вот сам скрипт: Код var name = "Сtаниsлав" for (var i = 0; i < name.length; i++) { if (name.charCodeAt(i) < 1040 || name.charCodeAt(i) > 1103) { var error = name.charAt(i); document.write ("Символ <b style='color:#ff0000;'>" + error + "</b> запрещён!<br> "); } } В нашем случае в переменной есть 2 англ буквы "t" и "s" И скрипт выведет это: Код Символ t запрещён! Символ s запрещён! Вопрос в том, как сделать так, что бы скрипт выводил только список букв в ряд, а надпись "символ запрещён" писалась один раз. Короче что бы выводилось так: Код Символы: t // s запрещены! Только просьба показать решение именно на чисто JS без jQuery. Сообщение отредактировал Rad_van_Cor - Вторник, 18 Мар 2014, 11:44:35
|
Код var name = "Сtаниsлав" var error = ""; for (var i = 0; i < name.length; i++) { if (name.charCodeAt(i) < 1040 || name.charCodeAt(i) > 1103) { var error += name.charAt(i)+", "; } } if(error!==""){ document.write ("Символы <b style='color:#ff0000;'>" + error + "</b> запрещены!<br> "); } Перед циклом включаем переменную, содержимое которой: пустое. Потом циклом добавляем в эту переменную результат выполнения цикла. Учитесь читать, читая - вчитывайтесь, вчитываясь - вдумывайтесь, вдумываясь - понимайте, поняв - делайте. ©
Сообщение отредактировал Inkvizitor - Вторник, 18 Мар 2014, 12:14:17
|
|
Потому что это сырой пример, накалякал держа ноут на коленках)
Чуть освобожусь - напишу нормально. Учитесь читать, читая - вчитывайтесь, вчитываясь - вдумывайтесь, вдумываясь - понимайте, поняв - делайте. ©
|
Inkvizitor, а, понял, ок, буду ждать)
И по возможности закомментируйте ваши действия в скрипте, что бы чайнику было понятнее) там в цикле ещё ж вроде нужно получить данные, return true или чё-то типа того прописать после условия. Хотя хрен знает) Сообщение отредактировал Rad_van_Cor - Вторник, 18 Мар 2014, 12:38:28
|
Код <script> var name = "Сtаниsлав"; var error = ""; /* Устанавливаем переменную */ for (var i = 0; i < name.length; i++) { if (name.charCodeAt(i) < 1040 || name.charCodeAt(i) > 1103) { error += name.charAt(i)+", "; /* Добавляем в конец строки результат ступени цикла, в конце каждого результата: запятая и пробел */ } } /* В случае если совпадения найдены, выводим строку, удаляя пробел и запятую, которые стоят в конце */ if(error){ document.write ("Символы: <b style='color:#ff0000;'>" + error.substring(0, error.length - 2) + "</b> запрещены!<br> "); } </script> Вроде должен работать. Учитесь читать, читая - вчитывайтесь, вчитываясь - вдумывайтесь, вдумываясь - понимайте, поняв - делайте. ©
Сообщение отредактировал Inkvizitor - Вторник, 18 Мар 2014, 14:03:06
|
|
Inkvizitor,
Не очень приятна такая конструкция. error += name.charAt(i)+", "; /* Добавляем в конец строки результат ступени цикла, в конце каждого результата: запятая и пробел */ Здесь можно бы использовать тернарку. Код error += (error.length == 0 ? "" : ", ") + name.charAt(i); Тогда и в выводе информации можно использовать прямо Код document.write("Символы: <b style='color:#ff0000;'>" + error + "</b> запрещены!<br> "); Любой код всегда лучше, если в нем нет костылей. ![]() |
|
| |||
| |||