我想創建一個個性化的表情符號系統trein我的JavaScript。 爲了實現這一點,我有一個離線系統來保存各種用戶表情符號(我只保存網址)。笑臉系統:事件添加圖像在文本區失敗
獲取數據後,我嘗試將它們顯示在我想要的textarea上方。到現在爲止還挺好!
現在,問題出現在將事件添加到圖像的時候了。 我嘗試爲每個圖像添加事件偵聽器,但無論哪個圖像只按最後一個圖像事件觸發。
這是:所有圖像正確並排顯示,但在textarea中插入的內容是循環中最後一次迭代的圖像。
有意義代碼:
/* Insert the code in the right place in the textarea*/
function putInTxtarea(text, textarea) {
// Mozilla text range replace.
if (typeof(textarea.selectionStart) != "undefined") {
var begin = textarea.value.substr(0, textarea.selectionStart);
var end = textarea.value.substr(textarea.selectionEnd);
var scrollPos = textarea.scrollTop;
textarea.value = begin + text + end;
if (textarea.setSelectionRange)
{
textarea.focus();
textarea.setSelectionRange(begin.length + text.length, begin.length + text.length);
}
textarea.scrollTop = scrollPos;
}
// Just put it on the end.
else {
textarea.value += text;
textarea.focus(textarea.value.length - 1);
}
var elem = document.createElement("div");
elem.id = "mySmilies";
elem.innerHTML = "";
for each (url in smiliesUrl){
var img = document.createElement("img");
img.src = url;
img.style.cursor = "pointer";
img.addEventListener('click',
function(){putInTxtarea('[img]'+url+'[/img]', document.getElementsByName('message')[0]);
};, false); // here is the event attaching
elem.appendChild(img);
}
這就是我一直在尋找的東西。只需要一個函數內部的函數來創建一個新的變量。謝謝。 – brunoais 2011-02-16 09:00:06
@ user551625:但是不要使用`for ... in`來遍歷數組。使用普通的`for`循環。 – 2011-02-16 09:26:28