Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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 如何使用jQuery创建帮助函数来更改图像?_Javascript_Jquery - Fatal编程技术网

Javascript 如何使用jQuery创建帮助函数来更改图像?

Javascript 如何使用jQuery创建帮助函数来更改图像?,javascript,jquery,Javascript,Jquery,我试图创建一个包含3个参数的imgLoader函数: btn:点击的btn img:将加载的特定img imgPath:我要加载的img的路径 我还希望btn是可选的,所以我检查btn是否为真 以下是我的想法: function imgLoader( btn, img, imgPath) { if (btn) { $btnBiDefault.removeClass('btn-bi-default-clicked'); btn.addClass('bt

我试图创建一个包含3个参数的imgLoader函数:

  • btn:点击的btn
  • img:将加载的特定img
  • imgPath:我要加载的img的路径
我还希望btn是可选的,所以我检查btn是否为真

以下是我的想法:

function imgLoader( btn, img, imgPath) {

    if (btn) {
        $btnBiDefault.removeClass('btn-bi-default-clicked');
        btn.addClass('btn-bi-default-clicked');
    }

    img.attr('src', imgPath);

}
我尝试在我的一个单击功能中调用imgLoader

$name.click(function(e) {
    e.preventDefault();

    imgLoader({
        img: $img,
        imgPath: '/path-to-img/image.png'
    });
});
我得到了0个错误,在我的.js文件上甚至没有警告。 我无法加载我的img

我不断得到:

未捕获类型错误:btn.addClass不是函数


有人能给我一个提示吗

您可能应该传递一个对象,而不是三个单独的变量。这使您能够更好地控制发送给函数的内容。例如,您可以不使用按钮调用imgLoader函数:
imgLoader({img:…”,imgPath:“…”})
或使用按钮:
imgLoader({btn:$(ele),img:“…”,imgPath:“…”})

您传递的对象中元素的顺序是无关的,可以使用点表示法调用:
args.item

试着这样做:

函数imgLoader(args){
“严格使用”;
如果(args.btn的类型!=“未定义”){
//按这里的按钮做事。
}
$(args.img.attr('src',args.imgPath);
}

养只猫

FYI将函数的第一个参数设置为可选,这不是一个好主意吗?
btn.addClass不是一个函数
意味着
btn
无权访问名为
addClass()
的方法,这意味着
btn
不是jQuery对象。它从哪里来,应该是什么?你不能让第一个参数是可选的,函数怎么知道你没有传递第一个参数,而是传递了图像作为第一个参数,你用一个对象调用imgLoader,但是你的函数被定义为需要3个不同的参数。你真的应该花点时间解释你的答案,这样发布的代码在将来也可能适用于其他人。好主意。我将添加更多细节。=)你已经在你的作品中了。我在我的文章中添加了更多的细节。如果你看不到它,你可以尝试刷新。添加了一个更详细的例子,这样你可以进一步了解发生了什么。