切换多个图像时,单击,但一次一个
Swapping multiple images when clicked but one at a time
这几天我一直在寻找解决这个问题的方法。
我想做的是在我的主页上显示一些类别。每个类别都可以点击"折叠"。到目前为止,折叠部分工作良好,但不是为折叠图标的图像交换。
下面的代码更改了图像并将其交换回来,但无论我单击哪一个,它们都只更改列出的第一个。
js in head标签:
<script type="text/JavaScript">
var q=0;
function swapImage(){
if(q==0){
document.getElementById("tcat_collapse").setAttribute('src','images/collapsecat.gif');
q++;
}
else{
document.getElementById("tcat_collapse").setAttribute('src','images/expandcat.gif');
q--;
}
}
</script>
我要交换的图像标签:
while ($query2->fetch()) {
echo "<tbody><tr><td class='category' colspan='5'>";
echo "<a style='"float: right'" href='"#'" onclick='"toggleItem('catcollapse')'">";
echo "<img class='collapsecat' src='images/collapsecat.gif' border='0' onclick='swapImage();' /></a>";
我知道它与getElementByID部分有关。
这个网站的大部分是用PHP完成的,正如你所看到的,它是在一个while循环中,所以我有几个使用这个折叠功能同时显示。我知道javascript看起来很丑,但正如我所说,它的工作,但只有1个ID。
那么我能做些什么来实现每个类别的单独折叠而不必单独编码每个类别呢?我可以传递一个php变量作为元素ID为这个脚本进行相应的更改吗?
找到解决方案了。效果非常好:
<script type="text/JavaScript">
var namesVec = new Array("collapsecat.gif", "expandcat.gif");
var root ='images/';
function swapImg(ima){
nr = ima.getAttribute('src').split('/');
nr = nr[nr.length-1]
if(nr==namesVec[0]){ima.setAttribute('src',root+namesVec[1]);}
else{ima.setAttribute('src',root+namesVec[0]);}
}
</script>
代码看起来也更好:)
while ($query2->fetch()) {
echo "<tbody><tr><td class='tcat' colspan='5'>";
echo "<a style='"float: right'" href='"#'" onclick='"toggleItem('collapseobj_forumbit_" . $catid . "')'">";
echo "<img class='tcat_collapse' src='images/collapsecat.gif' border='0' onclick='swapImg(this)' /></a>";
允许单独交换多个图像,无论ID如何,由于'swapImg(this)'
相关文章:
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 一次又一次地在新的和相同的选项卡中打开一个url
- 如何在设定的时间间隔内一次只显示一个图像
- 复选框:一次只允许单击一个复选框
- 使用 JavaScript 一次为一个元素设置多个属性
- 一次显示一个隐藏指令-AngularJS
- 我可以使用JS一次使用JSON数组中的一个字符串吗
- 一次显示一个指令AngularJS
- 运行“;非“;单击另一个函数中的函数仅一次
- 复选框一次选中一个不在gridview中工作
- 复选框一次选中一个不起作用
- 什么'是从对象列表中一次编辑一个对象的正确Angular/Firebase方法
- 在一组复选框中,一次只允许选择一个
- Slding表单不会一次显示一个表单
- 每天递减一个变量一次 - Javascript
- 如何在下一次 AJAX 调用中访问从一个 AJAX 调用返回的变量
- 如何每 10 秒调用一次 JS 函数,然后以角度激活一个函数
- 重置功能,因此一次只有一个打开
- JavaScript-如何创建一个一次只能运行一次的函数