2010-03-03 3 views
1

Быстрый вопрос, я пытаюсь передать значение переменной, а затем запустить функцию, если переменная была установлена ​​на что-то конкретное. Как мне это сделать?Как проверить переменную, переданную в функцию?

У меня есть следующий пример, где я хочу, чтобы присвоить имя значения в поле формы, если тип переменной устанавливается равным 1.

function test(name,type) { 
    if (type=1) { 
    document.myform.name.value = name; 
    } 
} 

и ссылку в теле HTML:

<a href="javascript:test('myname','1');">FILL IN MY NAME</a> 

Я также попытался следующие без везения:

function test(name,type) { 
    var checktype = type; 
    if (checktype = 1) { 
    document.myform.name.value = name; 
    } 
} 

Я уверен, что-то вроде этого ПОСС не знаю, что я делаю неправильно.

+0

спасибо всем за ответы. Я знал, что это должно быть что-то простое. Я также сам по себе обнаружил, что если я попытаюсь установить значение переменной для чего-то другого, кроме числа, скажем, type == go, мне нужно поместить значение в кавычки. – Choy

ответ

3

Попробуйте это:

function test(name,type) { 
    var checktype = type; 
    if (checktype == 1) { 
    document.myform.name.value = name; 
    } 
} 

Вы отсутствовали ==

+0

+1 ... 41 секунд быстрее ... –

+0

@Sani Huttunen: Спасибо :) – Sarfraz

2

Вы хотите использовать ==, не =. Использование одного символа будет присвоить значение 1 переменной checktype, а не проверки на равенство:

function test(name,type) { 
    if (type == 1) { 
    document.myform.name.value = name; 
    } 
} 
+0

@Yanksy да, если значение типа не определяет, что вы делаете дальше ... :-) – richsage

1

Javascript использует == для проверки равенства.

1
function test(name,type) { 
    if (type === "1") { 
    document.myform.name.value = name; 
    } 
} 

Не нужно использовать дополнительную переменную внутри функции для хранения значения. Также используйте ===' instead of == `если вы знаете тип переменной.

См Strict equal

Возвращает истину, если операнды строго равны (см выше) без преобразования типа.

+0

спасибо за дополнительный отзыв. – Choy

0
function test(name,type) { 
    if (type==1) { 
    document.myform.name.value = name; 
    } 
} 
1

Вы должны использовать comparison operator вместо assignment operator:

function test(name, type) { 
    if (type == 1) { 
    document.myform.name.value = name; 
    } 
} 

Если вы используете оператор присваивания, все выражение вычисляется в присвоенное значение. То есть type = 1 оценивает 1, что равно true и условие ветвления всегда выполняется.

+0

спасибо за дополнительное объяснение. – Choy

2

Чтобы избежать этого типа ошибки попытаться сделать это ..

function test(name,type) { 
    if (1 == type) { 
    document.myform.name.value = name; 
    } 
} 

В этом случае, если вы наберете по ошибке, 1 = тип, то вы получите сообщение об ошибке, и вы найти его правильный путь.

+0

Интересный отзыв, спасибо. – Choy

+0

Очень старый трюк, начиная с дней C, как всегда есть книга под названием «Написание сплошного кода», которая так много. Лично я использовал его все время, когда пишу в C/C++ - (в C# он не нужен, они не позволяют вам совершить эту ошибку) – Aristos

2

Если переменная не перешла к аргументу функции, адрес аргумента будет Null. Поэтому вам нужно проверить адреса с помощью инструкции if внутри вашей функции.т.е.:

bool flag(int & value) 
{ 
    if (&value == NULL) { 
     return false; 
    } 
    else { 
     return true; 
    } 
} 
Смежные вопросы