2016-09-26 14 views
0

私はこの問題についていくつかのアプローチを試みてきました。基本的には、同じ方法でいくつかのドロップダウンの内容を変更する必要があります。ですから、私はそれぞれを、またはしばらく使ってDRYを増やすことができましたが、コーヒースクリプトでそれほど多くの経験はありませんでした。ここでjQueryシンプルな各/ whileループはcoffeescriptで期待通りに動作しません

はリファクタリングするundryコードを '作業' されています。ここでは

$('#someId').val('someVal') 
$('#someOtherId').val('someVal') 

は私の最初の試みである:ここでは

arr = ['someId', 'someOtherId'] 
$.each arr, (i, el) => 
    $('#'+el).val('someVal') 

は私の第二の試みです:いくつかの理由から

arr = ['someId', 'someOtherId'] 
length = arr.length 
counter = 0 
while counter < length 
$('#' + arr[counter]).val('someVal') 
counter ++ 

私は各approchで複数のバリエーションを試していますが、私はconsole.logをセレクタとして返すことができます正しい値ですが、値を変更する場合は、コードが期待どおりに機能していないようです。

何か助けていただければ幸いです。

+1

を使用すると、HTMLへのアクセス権を持っている場合は、それぞれの要素と使用にクラスを追加することができます'$( '。foo').val( 'someval');' –

+0

確かにスマートです。私はこの解決策をとるつもりです。おかげでたくさんRory – gastngouron

答えて

1

試してみてください。

arr = ['someId', 'someOtherId'] 
for value, index in arr 
    $("##{value}").val('someVal') 

それとも、単にインデックスを気にしない場合:

arr = ['someId', 'someOtherId'] 
for value in arr 
    $("##{value}").val('someVal') 
+0

あなたの助けていただきありがとうございますが、私はUncaught Error:Syntaxエラー、認識できない式を取得しています:## {value} here。 – gastngouron

+0

私のフォールトは、 '' ## {value} 'の代わりに '' ## {value}' 'でなければなりません。 – sbulat

+0

Worked!私はそれが可能だったことを知らなかったこの補間のために多くのおかげで。 – gastngouron

0

私はコーヒースクリプトユーザーではありません。 しかし、あなたのコードを見ると、jqueryを使って配列を反復するように見えます。 代わりにArray.forEachを使用することを意味します。 例:

arr = ['someId', 'someOtherId'] 
arr.forEach (el) => 
    $('#'+el).val('someVal') 
+0

あなたの助けてくれてありがとう、私はちょうどそれを試してみて、それもうまくいきません。解決策を見つけるとすぐに私はあなたに最新の情報を提供していきます。これまでのところ、私はRoryの解決策を考えています。 – gastngouron

+0

2つのhtml要素のINPUTがあるとしますか? +あなたはDomReadyでもこのコードを実行していますか? – Keith

+0

私は