2012-02-08 10 views
0

セイは、私が持っていると思いますJavaScriptの関数への入力としての定数?私のjsファイル内

var NO = 0; 
var YES = 1; 

function doYouLikeCake(answer){} 

doYouLikeCakeが別のファイルから呼び出されたとき、私はNOまたはYES入力できるようにしたいが、私は何するかどうかはわかりませんものの変数の場合jsファイルに定義されています。これは可能ですか?

編集:HTMLビットを心配しないでください。いいえ、ボタンはありません。私はライブラリを作ろうとしているので、ライブラリのユーザがYES/NOを定義するのではなくdoYouLikeCake(YES)を書くことができるように、ライブラリを単純化したい。

+0

"はhtmlから呼び出されましたファイル " - あなたは' onclick = "..." 'のような属性ハンドラを意味しますか? – pimvdb

+0

あなたのhtmlファイルにいくつかのボタンがあると思いますか?そうならば、あなたはイエスのために真の使用なしのための偽必要があります。例:<ボタンをonclickの=「doYouLikeCake(真の);」>はい <ボタンのonclick =「doYouLikeCake(偽);」>何 – zero

+0

は 'のようにそれを呼び出していませんonclick = "doYouLikeCake(NO)" '。それは関数の解引数に0を渡します。 – j08691

答えて

0

はい、あなたはこれを行うことができます。

​​
+0

グローバル変数の使用を最小限に抑える必要があります。 –

+0

質問者は定数を求めています。この動作をエミュレートするには、グローバルが最も適しています。彼が最初にこれをやっているべきかどうかについてはコメントしていない。 – caleb

+0

確かにそうではありません。もちろん、定数は名前空間には依存しません。グローバルであるかローカルの名前空間にバインドされているかは気にしません。私が言ったように、グローバル変数の使用を最小限に抑える必要があります。したがって、あなたの名前空間に定数を代入することをお勧めします: 'APP.YES = true;'、 'onclick =" APP.doYouLikeCake(APP.YES) "'。 –

-1

なぜ入力する必要がありますか?グローバルスコープで宣言されているので、それらを参照するだけです。

function doYouLikeCake() 
{ 
    return YES; 
} 
+0

なぜこれが投票されましたか? –

0
定型は...

(function() { 

    var YES = true; 
    var NO = false; 

    // All your JavaScript code here 

}()); 

だから、あなたはあなたの名前空間、内部であなたの "定数" を置きたいと思うだろう

ました上記の私の例のようなIIFE、またはDOM対応のハンドラで実現できます。すべてのコードは、その名前空間内に存在する必要があります。これにより、 "定数"がコードで使用できるようになります。


ところで、あなたは非書き込み可能なプロパティを作成することにより、実定数を作成することができます:APPは一定の名前空間です

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

を。あなたの変数はJSファイルで定義されている場合は、スクリプトから動的にHTML要素を更新する必要がありますhttp://jsfiddle.net/vhQ8T/

0

は、ここに上記の私のコメントの例です。

これはあなたの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/

関連する問題