Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2016, 05:05   #1
laovai
 
Регистрация: 27.09.2014
Сообщений: 9
По умолчанию цикл в JavaScript

впервые в жизни делаю что-то с использованием javascript, и возник вопрос.

есть цикл для заполнения таблицы числами ДО введенного с клавиатуры включительно и их квадратов.

если НЕ включительно, то все в порядке:

Код:
var num;
            num = document.Test.t.value;
            document.write('<table>');
            for (i=1;i<num;i++)
            {
                     document.write('<tr>');document.write('<th>'+i+'</th>');
			document.write('<th>'+i*i+'</th>');
     }
        }

если же я меняю условие цикла на
Код:
for(i=1;i<num+1;i++)
то печатаются числа до введенного*10 (например, ввожу 5 - печатает до 50), правда, включительно

собственно, исправляется здесь все заменой "<" на "<="

но почему при num+1 код работает неправильно, и можно ли как-то исправить без замены на меньше или равно?

Последний раз редактировалось laovai; 11.04.2016 в 07:40.
laovai вне форума Ответить с цитированием
Старый 11.04.2016, 07:45   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

num это строка из эдита
num+1 === '5' + '1' => '51'
Это джаваскрипт, такие дела.
чтобы было включительно, лучше использовать for (i=1;i<=num;i++) и не возиться с + 1
Но вообще, по уму, надо сложить наоборот
Код:
num = 0 + document.Test.t.value;
тогда в num Будет гарантированно число.

Плюс книжицу по основам почитать, там эти моменты расписываются.
phomm вне форума Ответить с цитированием
Старый 11.04.2016, 08:11   #3
laovai
 
Регистрация: 27.09.2014
Сообщений: 9
По умолчанию

спасибо!

Цитата:
Сообщение от phomm Посмотреть сообщение
Но вообще, по уму, надо сложить наоборот
Код:
num = 0 + document.Test.t.value;
тогда в num Будет гарантированно число.
попытки сделать это были,, все равно тот же самый результат - выводится число*10
только <= и помогло

в любом случае спасибо за объяснение про то, что num воспринимается как строка.

Последний раз редактировалось Alex11223; 11.04.2016 в 08:27.
laovai вне форума Ответить с цитированием
Старый 11.04.2016, 08:25   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Код:
0 + '5' + 1
не превратит строку в число, только
Код:
+'5' + 1
(унарный плюс).

Но лучше
Код:
num = parseInt(document.Test.t.value) + 1;
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать процедуры для “Цикл For ... Next ” и «Цикл Do ... Loop» по ниже приведенному условию Кристина_Патачиц Microsoft Office Excel 3 17.04.2013 17:01
Javascript - классы, они есть или их нету в Javascript? Kasper1 JavaScript, Ajax 3 05.03.2011 09:42
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34