我无法从标记点访问变量。错误控制台表示该变量未声明。几年前我遇到了这个问题,我解决了这个问题,但是谷歌搜索了几个小时,我再也找不到解决方案了。 你有一个想法,问题是什么以及我如何解决它?
提前致谢。
var smileys = [
[":smile:", "smile.png"],
[":sad:", "sad.png"],
[":love:", "love.png"],
[":angry:", "angry.png"],
[":amazed:", "amazed.png"],
[":laugh:", "laugh.png"],
[":wink:", "wink.png"],
[":crying:", "crying.png"],
];
$(document).ready(function(){
for(var i=0; i<smileys.length; i++){
var smiley = document.createElement("img");
smiley.src = "./res/" + smileys[i][1];
smiley.style.width = "24px";
smiley.style.height = "24px";
smiley.onclick = function(){
alert(smileys[i][0]);
// $("#chat-input").append(smileys[i][0]);
};
$("#smileys").append(smiley);
}
});
答案 0 :(得分:0)
在您提供的代码中,您可以访问smileys
函数中的onclick
数组,因为smileys
是全局变量。您的问题是i
事件中循环的onclick
索引为8,超出范围。
解决这个问题的一个好方法是在每个i
图像中保存smiley
的值,然后在事件中访问它,如下所示:
var smileys = [
[":smile:", "smile.png"],
[":sad:", "sad.png"],
[":love:", "love.png"],
[":angry:", "angry.png"],
[":amazed:", "amazed.png"],
[":laugh:", "laugh.png"],
[":wink:", "wink.png"],
[":crying:", "crying.png"],
];
$(document).ready(function() {
for (var i = 0; i < smileys.length; i++) {
var smiley = document.createElement("img");
smiley.src = "./res/" + smileys[i][1];
smiley.style.width = "24px";
smiley.style.height = "24px";
smiley.value = i;
smiley.onclick = function() {
alert(smileys[this.value][0]);
};
$("#smileys").append(smiley);
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="smileys"></div>
&#13;