2017-06-03 15 views
0

なぜ機能していませんか?Javascript/Coffeescript append TypeError:関数ではありません

文字列値の変数msgを変更すると機能します。

コード:

console.log full_messages # Array [ "text to be displayed" ] 
for msg in full_messages 
    $('#error_explanation ul').append('<li>'+ msg +'</li>') 

エラーメッセージ:

TypeError: msg is not a function

+0

@tholoこの "$ - >"を意味しましたか?そうであれば!はい、そうです。 –

+0

'full_massages [msg]' – tholo

+0

$( '#error_explanation ul')。append( '

  • ' + full_messages [0] + '
  • ') - これもうまくいかなかった(反復なし) –

    答えて

    2

    あなたの問題はあなたの空白(またはその欠如)である:

    '<li>'+ msg +'</li>' 
    

    のCoffeeScriptは、その中に、第2 +思いますは単項演算子なので、すべてが次のように解釈されます。

    あなたは二項演算子の両側にスペースを入れた場合
    '<li>' + msg(+'</li>') 
    

    '<li>' + msg + '</li>' 
    #  ^^^ ^^^ 
    

    を、その後のCoffeeScriptは、あなたはそれが期待しているものを行います。 Thumbの規則:常にバイナリ演算子の両側にスペースを入れてください。

    また、文字列の補間を使用することができます。

    "<li>#{msg}</li>" 
    

    '<li>' + msg + '</li>'とまったく同じJavaScriptをなるが(間違いなく)もっと読みやすく、慣用的であること。

    +0

    いい男!私は問題が何かばかげたことを知っていた!そして補間についての非常に良い先端! –

    +0

    あなたは歓迎します。何が間違っているかを理解するのに少し時間がかかりました。 –

    関連する問題