Javascript 如何使用jQuery创建帮助函数来更改图像?
我试图创建一个包含3个参数的imgLoader函数: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
- btn:点击的btn
- img:将加载的特定img
- imgPath:我要加载的img的路径
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个不同的参数。你真的应该花点时间解释你的答案,这样发布的代码在将来也可能适用于其他人。好主意。我将添加更多细节。=)你已经在你的作品中了。我在我的文章中添加了更多的细节。如果你看不到它,你可以尝试刷新。添加了一个更详细的例子,这样你可以进一步了解发生了什么。