下記のように自己定義関数sampleの中において、alertの中に変数として
hoge+messageを代入してsample("push")によって、結果として"hello"を返したいのですが
"push_message"として文字列が返されます。
この関数の中のhoge+'_message'を変数として使用したいのですが
どのようにすれば良いのでしょうか?
html
1<button class="push">push</button>
javascript
1const push_message ="hello"; 2sample("push") 3 4function sample(hoge){ 5$('.'+hoge).on('click',function(){ 6 alert(hoge+'_message'); 7 }) 8}
追記
なぜそのようにしたいのかという目的についてご指摘があったため、下記の通り、実際の状況を踏まえて、目的とともに内容を追記させていただきました。
実際にはconst push_messageは配列でこれに対する処理を自己定義関数内で書いております。
html
1<button class="ary1">click</button>
ここで自己定義関数でそれぞれの配列に対して処理を定義する場合に以下のようにするよりも
javascript
1var ary1_a=[]; 2var ary2_a=[]; 3var ary3_a=[]; 4 5function sample (cls, cls_a){ 6$(".”+cls).on('click',function(){ 7cls_a.push(/*something*/) 8}) 9}
例えば以下のように**引数を減らしたほうが後々見通しが良いためというのが目的です**。
javascript
1var ary1_a=[]; 2var ary2_a=[]; 3var ary3_a=[]; 4 5function sample (cls){ 6$(".”+cls).on('click',function(){ 7(cls+"_a").push(/*something*/) 8}) 9}
たまたま、以下の条件を満たすため、このような対応をしたいと感がているところです。
- 2つの引数となるべき一部の文字列(cls)が重複している
- その後に続く文字列(_a)が適用すべき関数において共通である
なお、eval(hoge+'_message')で対応することは可能かと思うのですが、一般的にevalを使わなくて良い方法があるのであれば仕様は控えるべきと、学んだことがあるため今回使用はしていません
回答2件
あなたの回答
tips
プレビュー