Javascript将click函数作为非函数返回
我有两个php文件-Javascript将click函数作为非函数返回,javascript,php,Javascript,Php,我有两个php文件-index.php和loadimages.php。 索引页具有缩略图库和画布。缩略图库中的图像通过loadimages.php填充。以下是loadimages.php中的代码片段: for ($i=0; $i<count($files); $i++) { $num = $files[$i]; $filname = basename($num, ".jpg"); $filnam = substr($filname, -5); echo '&
index.php
和loadimages.php
。
索引页具有缩略图库和画布。缩略图库中的图像通过loadimages.php填充。以下是loadimages.php中的代码片段:
for ($i=0; $i<count($files); $i++)
{
$num = $files[$i];
$filname = basename($num, ".jpg");
$filnam = substr($filname, -5);
echo '<figure class="item">';
echo '<img class="matchImages" onclick="clickedImage(this.id)" src="'.$num.'" id="thumbNails' . $filnam . ' "/>';
}
上面的代码没有任何错误。我想建立一个功能,在刷新页面时,我想在上次单击的图像上虚拟地单击以使用户在重新加载之前保持在相同的图像上。我为此创建了一个eventlistener,如下所示:
function clickedImage(clicked_id) {
localStorage.setItem("clickedImg", clicked_id);
var clickedImg = document.getElementById(clicked_id).src;
var clickedImg = clickedImg.replace(/^.*[\\\/]/, '');
var canvas = document.getElementById("mycanvas");
var ctx = canvas.getContext("2d");
var thumbNails = document.getElementById("loaded_img_panel");
var pic = new Image();
pic.onload = function() {
canvas.width = pic.width;
canvas.height = pic.height;
ctx.drawImage(pic, 0,0)
}
thumbNails.addEventListener('click', function(event) {
pic.src = event.target.src;
});
}
window.addEventListener('load', function() {
var clickedImage = localStorage.getItem('clickedImg');
clickedImage(clickedImage);
})
这不起作用,并且控制台返回未捕获类型错误:clickedImage不是函数
函数和变量都被命名为clickedImage
:
var clickedImage = localStorage.getItem('clickedImg');
clickedImage(clickedImage);
将变量重命名为其他变量(例如,单击edimagevalue
),您就可以开始了
顺便说一句,你在这里遇到的问题叫做。好的……我找到了问题所在,并发布了这个答案,以帮助可能需要答案的人。我的代码中的问题在我的js中的这一行:
thumbNails.addEventListener('click', function(event) {
pic.src = event.target.src;
});
因为我在调用函数中的单击事件,window.addEventListener正在等待该单击发生。当我将代码更改为以下内容时:
var clkImg = localStorage.getItem('clickedImage');
var canvas = document.getElementById("mycanvas");
var ctx = canvas.getContext("2d");
var thumbNails = document.getElementById("loaded_img_panel");
var pic = new Image();
pic.onload = function() {
canvas.width = pic.width;
canvas.height = pic.height;
ctx.drawImage(pic, 0,0)
}
pic.src = clkImg;
一切都开始正常工作。clickedImage
不是一个函数,因为它是本地存储中的一个值。说真的,既然我将返回的imageid保存在localstorage中,并且clickedImage函数将imageid作为参数,那么您希望js如何理解在clickedImage(clickedImage)
中应该使用哪个clickedImage
,我希望我能读懂它们…不确定我的理解是否正确OK…我得到了异常情况。@u\u mulder尽管更改了变量名…但我仍然得到了相同的错误…你有什么想法吗?谢谢你的回答…我尝试了更改变量名…仍然不起作用并收到相同的消息