我正在爲我的網站寫一個笑臉解析函數。我試圖完成的是轉換某些字符串,例如":)"
成這樣一個形象:爲什麼我的笑臉解析代碼調用原生javascript函數?
還是這裏的實際的HTML爲例:
":)" ===> <img src="images/smilies/smile.png" />
我的功能是什麼它的意思做的,但它也解析本地JavaScript函數名!什麼意思呢,就是如果我鍵入包含字符串"push"
,"pop"
,或"some"
(有可能加載等)我的函數將解析這些字符串爲無效相似圖片評論:
這裏是一個html字符串顯示此:
<img src="images/smilies/function some() { [native code] }" alt="">
這會導致瀏覽器控制檯中404未找到錯誤。
Failed to load resource: the server responded with a status of 404 (Not Found)
這是怎麼發生的?我不這樣做在我的代碼什麼太不尋常,因爲你可以在這裏看到:
function parse_new_comment(commentElem){
$(commentElem).html(parse_comment($(commentElem).text()));
}
function parse_comment(comment){
var formatted_comment = "";
var smilies = new Array();
smilies[":)"] = "smile.png";
smilies[":D"] = "smile-big.png";
smilies[":p"] = "tongue.png";
smilies["[sheep]"] = "sheep.png";
smilies["<3"] = "love.png";
smilies["[love]"] = "love.png";
var words = comment.split(" ");
for (var i = 0; i < words.length; i++) {
if(smilies[words[i]] !== undefined){
formatted_comment += ' <img src="images/smilies/'+smilies[words[i]]+'" alt="" />';
}else{
formatted_comment += ' ' + words[i];
}
}
return formatted_comment;
}
我有一種感覺,這行代碼是導致該問題if(smilies[words[i]] !== undefined){
,爲push
和pop
是陣列功能,我米不太確定,但我會很感激,如果有人可以提出任何想法,爲什麼我的功能失敗。
哦,我忘了提,我的網頁使用AJAX做的一切,所以新的評論通過調用這樣的函數解析:
parse_new_comment($("#comment_343"));
謝謝。
您應該聲明「表情符號「是這樣的:'var smilies = {};'因爲你不會將它用作數組。 – Pointy
你不應該爲此使用'Array'。一個映射(關聯數組,哈希表,字典,無論你想稱之爲什麼)都可以,很遺憾,Javascript會將它與對象混淆,所以一個對象('{}')將不得不這樣做。請注意,這並不能解決實際問題,儘管它可能會解決其他潛在問題。 – delnan