Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.03.2009, 15:38
Интересующийся
Отправить личное сообщение для Tend Посмотреть профиль Найти все сообщения от Tend
 
Регистрация: 16.03.2009
Сообщений: 13

Как передать false через функцию?
Есть такая функция:
function check()
{
	var fnm = "";
	function checkf(fid)
	{
		fnm = document.getElementById(fid);
		if (fnm)
		{
			if (fnm.value.length < 2)
			{
				fnm.focus();
				// здесь нужно сделать так, чтобы функция check() возвратила false
			}
		}
	}
	checkf("country");
	checkf("city");
	checkf("address");
	checkf("post");
}


Что написать в функции checkf(), чтобы не она сама возвратила false, а чтобы false возвратила функция check()?
Ответить с цитированием
  #2 (permalink)  
Старый 16.03.2009, 15:43
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,234

function check()
{
    var fnm = "";
    function checkf(fid)
    {
        fnm = document.getElementById(fid);
        if (fnm)
        {
            if (fnm.value.length < 2)
            {
                fnm.focus();
                return false;
            }
            else
            {
                return true;
            }
        }
    }
    return 
    checkf("country") && 
    checkf("city") &&
    checkf("address") &&
    checkf("post");
}

function check()
{
    var fnm = "";
    function checkf(fid)
    {
        fnm = document.getElementById(fid);
        if (fnm)
        {
            if (fnm.value.length < 2)
            {
                fnm.focus();
                return false;
            }
            else
            {
                return true;
            }
        }
    }
    if !checkf("country") return false;
    if !checkf("city") return false;
    if !checkf("address") return false;
    if !checkf("post") return false;
    return true;
}

Последний раз редактировалось Gvozd, 16.03.2009 в 15:45.
Ответить с цитированием
  #3 (permalink)  
Старый 16.03.2009, 16:08
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от Gvozd
if !checkf("country") return false;
if !checkf("city") return false;
if !checkf("address") return false;
if !checkf("post") return false;
А что, можно было оставить вариант Tend в этом случае, так даже наглядней:

Сообщение от Gvozd
return checkf("country") && checkf("city") && checkf("address") && checkf("post");
Единственное, что return нельзя оставлять без операнда в той же строке (из-за автоматической вставки точки с запятой), поэтому, это:

return
checkf("country") &&
...


неверно, а

return checkf("country") && ...
...


верно.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #4 (permalink)  
Старый 16.03.2009, 16:21
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,234

Сообщение от Dmitry A. Soshnikov
А что, можно было оставить вариант Tend в этом случае, так даже наглядней:
честно говоря мой мозг ломается с утра в попытке понять эту фразу.
кажется ты решил что я процитировал код Tend?
на самом деле я просто привел два решения.
отличий по функциональности у них нету в принципе.
оба выкидываются по первому false

Сообщение от Dmitry A. Soshnikov
Единственное, что return нельзя оставлять без операнда в той же строке (из-за автоматической вставки точки с запятой),
автоматическая втсавка точек с запятой производится самим интепретатором?
или какими-нибудь пакерами.
надо запонмнить
Ответить с цитированием
  #5 (permalink)  
Старый 16.03.2009, 16:50
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Сообщение от Gvozd
автоматическая втсавка точек с запятой производится самим интепретатором?
или какими-нибудь пакерами.
интерпретатором.
Ответить с цитированием
  #6 (permalink)  
Старый 16.03.2009, 16:55
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от Gvozd
отличий по функциональности у них нету в принципе.
оба выкидываются по первому false
да, естественно, нету, просто вариант Tend более "читаем", лаконичен и нагляден. Хотя, субъективно всё это, конечно.

Сообщение от Gvozd
на самом деле я просто привел два решения.
а, всё, пардон, не заметил =)

Сообщение от Gvozd
автоматическая втсавка точек с запятой производится самим интепретатором?
да, http://javascript.ru/ecma/part7#a-7.9
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 16.03.2009 в 17:05.
Ответить с цитированием
  #7 (permalink)  
Старый 16.03.2009, 16:55
Интересующийся
Отправить личное сообщение для Tend Посмотреть профиль Найти все сообщения от Tend
 
Регистрация: 16.03.2009
Сообщений: 13

Всем спасибо.
Ответить с цитированием
  #8 (permalink)  
Старый 16.03.2009, 16:55
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,234

ZoNT,
спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать id во всплывающее окно Legolas Общие вопросы Javascript 4 21.04.2010 22:50
Как выполнить функцию с задержкой? AlexMak Events/DOM/Window 6 11.12.2008 11:53
Как передать массив? remitmaster Общие вопросы Javascript 6 17.09.2008 12:47
Как сделать функцию типа toDataUrl для рисунка в ie6 ? Олег Общие вопросы Javascript 2 14.09.2008 00:06
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11