簡體   English   中英

轉義Javascript字符串

[英]Escape Javascript String

作為div覆蓋的一部分,我編寫了一些代碼來制作按鈕。 該函數接受一個對象

    function f1(marker){
    var notesBox = '<div id="saveMarkerNotesDiv'+marker.id+'"> <input type="button" onclick="saveMarkerNotes(\''+ marker+'\')" id="saveMarkerNotes'+marker.id+'" value="Save" /> </div>';
return notesBox;
    }

function saveMarkerNotes(marker){
 alert(marker);
//Just shows [object Object]
alert(marker.id);
//Above line throws an error as it cannot find id in the **string marker**. 
}

問題是為什么我逃脫后變成字符串。 另外我在以前的方法f1中使用了相同的對象,並且在這里工作正常。 調用上述f1函數時,它具有對象標記。 我可以在方法中訪問標記的屬性和屬性。

上面的函數f1具有標記對象。 但是,當調用函數saveMarkerNotes()時,似乎不再具有該對象。 當我在saveMarkerNotes()中打印marker.id時,它顯示未定義,而當我在警報中顯示標記對象時,它顯示為[object Object]。 我覺得在onclick =“ saveMarkerNotes(\\''+ marker +'\\')”代碼中,標記對象正在變成字符串,不再是對象。 我該如何轉義字符串,以便它仍然是對象而不是字符串。

使用DOM API生成DOM元素( <div>等),並使用Javascript以編程方式將事件處理程序附加到它們。 不要經歷將字符串解釋為HTML的串聯字符串,HTML會將元素附加到DOM,而DOM最終會再次從字符串觸發Javascript。

let input = document.createElement('input');
input.type = 'button';
input.id = 'saveMarkerNotes' + marker.id;
input.value = 'Save';
input.addEventListener('click', saveMarkerNotesDiv.bind(null, marker));

let div = document.createElement('div');
div.id = 'saveMarkerNotesDiv' + marker.id;
div.appendChild(input);

return div;

現在,您需要將.appendChild(div)添加到某個元素,以將其添加到頁面中。 是的,這似乎更加冗長和煩人,但這是正確的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM