2016-11-15 44 views
1

我正嘗試使用onclick事件將字符串傳遞到函數中。但是,當我點擊鏈接時,該函數內的變量不會返回任何內容。它是空的。當我將一個數字作爲參數傳遞並且沒有問題顯示在警報中時,我沒有任何問題。我不確定我做錯了什麼。當通過onclick函數傳遞時,包含字符串的變量爲空

for (var j=0;j<current_order.length;j++){ 
    var note_id = "note" + (j+1); 
    text = text + "<button onClick= 'deleteItemfromOrder("+j+")'>Delete</button>"; 
    text = text + "<a id = '"+note_id+"' onClick= 'toggleNote("+note_id+")'>Notes</a>"; 
    alert(text); 
} 

這是我試圖note_id傳遞給函數:

function toggleNote(showHideDiv) { 
    alert(showHideDiv); 
} 

我曾嘗試多種方法將字符串作爲參數傳遞給函數EG:

text = text + "<a id = '"+note_id+"' onClick= 'toggleNote('"+note_id+"')'>Notes</a>"; 

text = text + "<a id = '"+note_id+"' onClick= 'toggleNote(\'"+note_id+"\;)'>Notes</a>"; 

H無論何時該字符串在函數的另一側顯示爲空。有沒有問題,如果我通過一些如:

text = text + "<a id = '"+note_id+"' onClick= 'toggleNote("+2+")'>Notes</a>"; 
+0

也可以有人說爲什麼這已經downvoted? –

回答

1

你的問題是,你錯過了引號,數字不用引號中,如

onclick='toggleNote(3)' 

但字符串確實

onclick='toggleNote("string")' 

而且,使用相同的報價將不工作,要麼

onclick='toggleNote('string')' 

這意味着你必須做

text = text + "<a id = '"+note_id+"' onClick= 'toggleNote(\""+note_id+"\")'>Notes</a>"; 

但真的是你應該做的,是創建元素

for (var j = 0; j < current_order.length; j++) { 
    (function(i) { 
     var btn = document.createElement('button'); 
     var anc = document.createElement('a'); 

     btn.addEventListener('click', function() { 
      deleteItemfromOrder(i); 
     }); 

     btn.textContent = 'Delete'; 

     anc.addEventListener('click', function() { 
      toggleNote("note" + (i+1)) 
     }); 

     anc.textContent = 'Notes'; 
    })(j); 
} 
+0

或只是引用id,不用擔心傳遞字符串。 – epascarello

+0

這很好。無論我在哪裏看,但他們使用單引號和語音標記像javascript中的雙引號字符串。我怎麼知道何時何地使用不同的和何時使用轉義我認爲它被稱爲(這些\ backslashes)。 –

+0

@FKhan - 如果你有一個屬性,並且該屬性使用單引號,那麼它內部的任何內容都必須使用雙引號,否則當你添加單引號時該屬性是關閉的,並且由於你的字符串是用javascript中的雙引號定義的,被轉義爲不關閉字符串文字。 – adeneo

相關問題