2016-03-18 26 views
1

我試圖解析2號的功能saveQuestion函數的參數,但它無法正常工作的功能裏面2個參數。的JavaScript - 串聯不工作

$("#questionRow") 
.append('<input type="submit" class="btn btn-default" id="saveQuestion' 
     + addSectionCount + '" value="Save question ' 
     + addSectionCount + '" onclick="saveQuestion(' 
     + addOpSectionCount + '\',\'' addSectionCount + ')" ></div>'); 
+1

嘗試註冊一個適當的回調函數'。對(「點擊」,F)',而不是傳遞一個'onclick'屬性 - 它會是遠不脆! – Alnitak

回答

3

這將遠遠小於脆,完全避免這個問題,如果你只是使用jQuery來註冊,而不是使用20世紀90年代風格的行內的事件處理程序的適當回調函數:

$('<input type="submit" />') 
    .attr('id', 'saveQuestion' + addSectionCount) 
    .val('Save question ' + addSectionCount) 
    .on('click', function() { 
     saveQuestion(addOpSectionCount, addSectionCount); 
    }) 
    .appendTo('#questionRow')' 

還要注意其他使用jQuery函數來避免在HTML字符串中使用字符串連接。

注:我已經扭轉了append從而使鏈.on調用適用於新創建的元素,而不是#questionRow

NB 2:(?有)我通常會使用$('<el>', {id: ..., val: ...})但ISTR是MSIE已與輸入元素語法的問題。

+0

感謝您的幫助。它看起來不錯,但是當我做到這一點,該按鈕不起作用,並顯示在控制檯 – trinidado

1

看來你錯過了一個+運營商靠近你的代碼

$("#questionRow") 
    .append('<input type="submit" class="btn btn-default" id="saveQuestion' 
     + addSectionCount + '" value="Save question ' 
     + addSectionCount + '" onclick="saveQuestion(' 
     + addOpSectionCount + '\',\'' 
     + addSectionCount + ')" ></div>'); 
1

由於盧卡提到的結尾,你是缺少一個+運營商。您也沒有在格式化saveQuestion的參數時添加足夠多的單引號。這應該工作:

$("#questionRow") 
    .append('<input type="submit" class="btn btn-default" id="saveQuestion' 
     + addSectionCount + '" value="Save question ' 
     + addSectionCount + '" onclick="saveQuestion(\'' 
     + addOpSectionCount + '\',\'' + addSectionCount + '\')" ></div>'); 
    }); 

正如其他人所說,既然您使用jQuery無論如何,你應該使用jQuery附加一個單擊事件處理程序的輸入:

$('#saveQuestion'+addSectionCount).on('click', function() { 
    // do stuff 
}); 
+0

我在回答第一個嘗試看起來像你的第二個例子中沒有錯誤,但後來我意識到,被錯誤地添加點擊處理程序到整個行,不只是新的''元素 – Alnitak

+0

我也肯定他_doesn't_希望這些額外的引號,因爲those'll只是傳遞字符串文字''addSectionCount'',而不是與該名稱的變量的值。 – Alnitak

+0

謝謝,我用正確的ID更新了jQuery回調。作爲將字符串常量,我認爲他想通過該值作爲字符串,因爲他在原來的代碼中使用單引號。他的代碼導致了'onclick =「saveQuestion(',')」'。 – hmichaels