Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript将click函数作为非函数返回_Javascript_Php - Fatal编程技术网

Javascript将click函数作为非函数返回

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 '&

我有两个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 '<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尽管更改了变量名…但我仍然得到了相同的错误…你有什么想法吗?谢谢你的回答…我尝试了更改变量名…仍然不起作用并收到相同的消息