2014-10-12 65 views
2

意外結束我有以下腳本:語法錯誤:在JS

function getMoods(nb) { 
    var index; 
    var a = ["Banana", "Coconut", "Peach", "Apple", ...]; 
    for (index=0; index<nb; ++index) { 
     alert('a'); 
     if(index==1 || index==5 || index==9 || index==13) { moods += '<div class="col-xs-4">'; } 
      moods += ' 
       <div class="checkbox"> 
        <label for="'+a[index]+'"> 
         <input type="checkbox" id="'+a[index]+'" class="moods"> '+a[index]+' 
        </label> 
       </div>'; 
     if(index==4 || index==8 || index==12) { moods += '</div> '; } 
    } 
    $("#moods-area").html(moods); 
} 

我不明白爲什麼我有以下錯誤:

SyntaxError: Unexpected EOF 

你能幫幫我嗎?

+7

JavaScript不支持多行字符串 – Oriol 2014-10-12 13:19:59

+0

擴展@Oriol:使用「+(新行)」 ...... – 2014-10-12 13:27:03

回答

3

有兩個問題:

  1. 誤用的spread operator ...的:

    ["Banana", "Coconut", "Peach", "Apple", ...]; 
    

    這引發SyntaxError: expected expression, got ']',因爲傳播的操作後沒有任何可迭代的對象。

  2. JavaScript不支持多行字符串。

    你可以使用一些替代方案:

    • 連接多個字符串

      moods += 
          '<div class="checkbox">' 
          +'<label for="'+a[index]+'">' 
           +'<input type="checkbox" id="'+a[index]+'" class="moods"> '+a[index] 
          +'</label>' 
          +'</div>'; 
      
    • 使用\在每行的末尾繼續在下一個

      moods += '\ 
          <div class="checkbox">\ 
          <label for="'+a[index]+'">\ 
           <input type="checkbox" id="'+a[index]+'" class="moods"> '+a[index]+'\ 
          </label>\ 
          </div>'; 
      
    • 字符串
    • 加入一串字符串:

      moods += [ 
          '<div class="checkbox">', 
          '<label for="'+a[index]+'">', 
           '<input type="checkbox" id="'+a[index]+'" class="moods"> '+a[index], 
          '</label>', 
          '</div>'].join(''); 
      
+0

感謝任何想法,爲什麼我有'對象HTMLInputElement'在我的網頁後, ? – Geronimo 2014-10-12 13:28:43

+0

@ Geronimo它似乎有效:http://jsfiddle.net/of0u6ze4/ – Oriol 2014-10-12 13:34:09