Константы как входные данные для функции в JavaScript? - PullRequest
0 голосов
/ 08 февраля 2012

Скажите в моем файле js, что я хочу иметь

var NO = 0;
var YES = 1;

function doYouLikeCake(answer){}

Когда doYouLikeCake вызывается из другого файла, я хочу иметь возможность ввести ДА или НЕТ, но я не уверен, как это сделатьесли эти переменные определены в файле js.Возможно ли это?

РЕДАКТИРОВАТЬ: Неважно бит HTML.Нет, кнопок нет.Я пытаюсь создать библиотеку и хочу упростить ее, чтобы пользователи библиотеки могли просто написать doYouLikeCake (YES), а не определять YES / NO сами.

Ответы [ 5 ]

0 голосов
/ 08 февраля 2012

Если ваши переменные определены в файле js, вам необходимо динамически обновить элемент html из скрипта.

Например, это может быть ваш HTML:

<input type="radio" name="YesOrNo" id="NO" value="PlaceHolderForNo" />NO
<input type="radio" name="YesOrNo" id="YES" value="PlaceHolderForYes" />YES

И ваш JS:

var NO=0;
var YES=1;

var inputNO=document.getElementById("NO");
var inputYES=document.getElementById("YES");

// это ваши переменные

inputNO.value=NO; 
inputYES.value=YES;

inputNO.onclick=function(){doYouLikeCake(this.value);};
inputYES.onclick=function(){doYouLikeCake(this.value);};

Живой пример: http://jsfiddle.net/WhHXK/

0 голосов
/ 08 февраля 2012

вот пример из моего комментария выше: http://jsfiddle.net/vhQ8T/

0 голосов
/ 08 февраля 2012

Да, вы можете сделать это:

<input type="submit" onclick="doYouLikeCake(YES);" value="Yes">
<input type="submit" onclick="doYouLikeCake(NO);" value="No">

<script>

    var NO = 0;
    var YES = 1;

    function doYouLikeCake(answer) { 
        //... 
    }

</script>
0 голосов
/ 08 февраля 2012

шаблон будет ...

(function () {

    var YES = true;
    var NO = false;

    // All your JavaScript code here

}());

Итак, вы хотите поместить свои «константы» в пространство имен, чего можно достичь с помощью IIFE (как в моем примере выше) или обработчика, готового к DOM. Весь ваш код должен находиться внутри этого пространства имен, что обеспечивает доступность ваших «констант» для вашего кода.


Кстати, вы можете создавать реальные константы, создавая непишущие свойства:

Object.defineProperty( APP, 'YES', {
    value: true,
    enumerable: true
});

где APP - пространство имен для константы.

0 голосов
/ 08 февраля 2012

Зачем вам нужно вводить их. Просто ссылайтесь на них, так как они объявлены в глобальной области видимости.

function doYouLikeCake()
{
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...