«Единственный способ творить великие дела – это любить то, что ты делаешь»
JavaScript
site.komp36.ru Создание сайтов. Твой сайт фотографа Что есть на сайте? Несколько фото галерей: свадебная, постановочная съемка, love story, детские фото. Договор на фотосъемку, прайс-лист.
site.komp36.ru Продающий лендинг «Установка и продажа окон» Установка и продажа окон, установка дверей, перегородок. Одностраничный продающий сайт. Заявки прямо с сайта
site.komp36.ru Универсальный лендинг. Любая тема сайта - 4900 руб. Лендинг адаптируется под любую тему: ремонт, отделка, продажа окон, дверей, лестниц, мебели и многое другое
site.komp36.ru Создание сайтов. Сайт сервисного центра. Сайт компании. Новости и отзывы. Несколько прайс-листов – под каждый отдельная страница. Возможность размещения статей


Игра «Морской Бой» на JavaScript: Простая Игра и Игра для Двоих



На этой странице будет продолжена работа с предыдущей практической задачей, где, напомним, средствами Javascript проводилась проверка номера телефона, состоящего из семи цифр, разделенных дефисом.

Здесь задача будет усложнена, причем ДВАЖДЫ измениться ее условие.

Исходное условие: Написать функцию, которая получает номер телефона в виде: 123-4567.

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

Далее следуют 2 модификации исходного условия.

1-ый вариант модификации условия

Написать функцию, которая получает номер телефона в виде: 123-4567 или 1234567.

То есть комбинация должна состоять из семи цифр от 0 до 9, и она МОЖЕТ разделяться после третьей цифры дефисом (нужно учесть оба варианта).

2-ой вариант модификации условия

Функция получает комбинацию, состоящую из семи цифр от 0 до 9, которая МОЖЕТ В ЛЮБОМ МЕСТЕ разделяться дефисом.

Возможные варианты: 1234567, 1-234567, 12-34567 и т.д.

Для всех условий: в комбинации могут участвовать любые цифры от 0 до 9. Цифры могут повторяться, и их порядок не важен.



Решение №1 - для 1-го варианта условия

Решение №1 дополняет 3-ий вариант решения исходной задачи.

Фрагмент кода

<script type="text/javascript">

function input(phone){

/* 1. Проверка на число символов: 7 или 8 */
if(phone.length < 7 || phone.length > 8){
return false;
}

for(i = 0; i < phone.length; i++){
/* 2. Если 4-ый символ Дефис, то всего символов должно быть 8. */
if(i === 3){
if(phone.length === 8 && phone.charAt(i) !== "-"){
return false;
}
/* 3. Если же число символов 7, то проверяем 4-ый символ на НЕ число */
else if(phone.length === 7 && isNaN(phone.charAt(i))){
return false;
}
}
/* 4. Проверка на НЕ число всех остальных символов */
else if(isNaN(phone.charAt(i))){
return false;
}
}
return phone;
}

var phone_N = prompt("Введите 7-ми значный номер из цифр от 0 до 9. При этом дефис может быть на 4-ой позиции");

var result = input(phone_N);

document.write(result);

</script>

Результат

Решение 1 - Дефис может быть на 4-ой позиции

Результат

Решение №2 - для 1-го варианта условия

Это решение дополняет 2-ой вариант решения исходной задачи.

Фрагмент кода

<script type="text/javascript">

function input(phone){

/* 1. Проверка на число символов */
if (phone.length > 8 || phone.length < 7) {
return false;
}

/* Извлекаем за 2 шага все символы если их 7 и все кроме Дефиса, если их 8 */
var first = phone.substring(0,3);
var second = phone.substring(phone.length - 4);

/* Проверки на НЕ число 2-х групп символов */
if (isNaN(first) || isNaN(second)) {
return false;
}

if (phone.length === 8 && phone.charAt(3) === "-") {
return phone;
}
else if (phone.length === 7){
return phone;
}
else{
return false;
}
return phone;
}

var phone_N = prompt("Введите 7-ми значный номер из цифр от 0 до 9. При этом дефис может быть на 4-ой позиции");

var result = input(phone_N);

document.write(result);

</script>

Результат

Решение 2 - Дефис может быть на 4-ой позиции

Результат

Дефис может быть на любой позиции - 2-ой вариант условия

Фрагмент кода

<script type="text/javascript">

function input(phone){

/* Проверка на число символов 7 или 8 */
if(phone.length != 7 && phone.length != 8){
return false;
}

/* Если число символов 7 - Проверка каждого на НЕ число */
if(phone.length == 7){
for(i = 0; i < phone.length; i++){
if(isNaN(phone.charAt(i))){
return false;
}
}
}

/* Возвращаем ложь, если введены 8 цифр, так как по условию их должно быть 7 или 7 и Дефис */
if(phone.length == 8 && isNaN(phone) == false){
return false;
}

if(phone.length == 8){
for(i = 0; i < phone.length; i++){
if(isNaN(phone.charAt(i)) && phone.charAt(i) !== "-"){
return false;/* Возвращаем ложь, если введены 7 цифр и вместо дефиса - другой символ */
}

/* Если среди символов есть Дефис... */
else if(phone.charAt(i) == "-"){
var first_group = phone.substring(0,i); /* Извлекаем группу символов до дефиса */
var second_group = phone.substring(i+1); /* Извлекаем группу символов после дефиса */
/*Далее проверка обеих групп символов на НЕ число */
if(isNaN(first_group) || isNaN(second_group)){
return false;
}

}
}
}
return phone;
}

var phone_N = prompt("Введите 7-ми значный номер из цифр от 0 до 9. Пробуйте в произвольном месте разделить их дефисом");

var result = input(phone_N);

document.write(result);

</script>

Результат

Дефис может быть на любой позиции

Результат

Эта задача может быть решена гораздо проще, если воспользоваться регулярными выражениями. Об этом на следующей странице.

Тогда может возникнуть вопрос: почему мы все это делали, создавали столь громоздкие решения?

Ответ прост: это тренировка полезна тем, кто учиться на практике работать с Javascript-кодом.

Читайте также...

site.komp36.ruТвой сайт фотографа. Создание сайтов Что есть на сайте? Несколько фото галерей: свадебная, постановочная съемка, love story, детские фото. Договор на фотосъемку, прайс-лист.
site.komp36.ru Акция Как начать свое дело? Свой сайт «Укладка плитки» 9 000 руб. Лендинг адаптируется под любой вид отделочных работ, продажу товаров или услуг. Сайт поможет найти новых клиентов
site.komp36.ru Акция Продающий лендинг «Установка и продажа окон» 9 000 руб. Одностраничный продающий сайт. Установка и продажа окон, установка дверей, перегородок. Заявки прямо с сайта

Отзывы и комментарии:

Комментариев нет...

Оставить отзыв:

Ваше Имя:

Текст комментария:

Ответьте на вопрос:

Сколько дней в Високосном году?


Задачи по JavaScript
Тематические публикации
site.komp36.ru Как начать свое дело? Свой сайт «Укладка плитки» 9 000 руб. Лендинг адаптируется под любой вид отделочных работ, продажу товаров или услуг. Сайт поможет найти новых клиентов
site.komp36.ru Продающий лендинг «Установка и продажа окон» 9 000 руб. Одностраничный продающий сайт. Установка и продажа окон, установка дверей, перегородок. Заявки прямо с сайта
Популярные заметки
Последние заметки