javascript - 通过触发和图片点击机制切换div

标签 javascript html jquery jquery-ui jquery-events

我目前正在使用切换 div 功能。我使用图像作为切换的触发点。例如,当 div 关闭时,会出现带有“加号”符号的图像,指示用户展开,反之亦然以压缩 div。唯一的问题是我使用两组图像来扩展和压缩 div,但我只能让一组图像工作,但不能同时工作。我的示例在 jsfiddle 中效果不佳,但如果您想查看它,这里有链接:http://jsfiddle.net/sQnd9/4/

这是我的例子:

<script type="text/javascript">
function toggle1(showHideDiv, switchImgTag) {
        var ele = document.getElementById(showHideDiv);
        var imageEle = document.getElementById(switchImgTag);
        if(ele.style.display == "block") {
                ele.style.display = "none";
        imageEle.innerHTML = '<img src="images/Plus_Circle.png"/>';
        
        }
        else {
                ele.style.display = "block";
                imageEle.innerHTML = '<img src="images/Minus_Circle.png"/>';
                
        }
}
</script>

<script type="text/javascript"> 

function toggle2(showHideDiv2, switchImgTag2) { 
        var ele = document.getElementById(showHideDiv2); 
        var imageEle = document.getElementById(switchImgTag2); 
        if(ele.style.display == "block") { 
                ele.style.display = "none"; 
        imageEle.innerHTML = '<img src=images/arrow_open.png/>'; 
        } 
        else { 
                ele.style.display = "block"; 
                imageEle.innerHTML = '<img src=images/arrow_close.png/>'; 
        } 
} 
</script> 


<div><a id="imageDivLink" href="javascript:toggle1('contentDivImg', 'imageDivLink');"><img src="images/Plus_Circle.png";/></a>Example</div>  
<br />
       <div id="contentDivImg" style="display:none;">
       Example1-Content
       </div>


<div><a id="imageDivLink2" href="javascript:toggle2('contentDivImg2', 'imageDivLink2');"><img src="images/Plus_Circle.png";/></a>Example2</div>  
<br />
       <div id="contentDivImg2" style="display:none;">
       Example2-Content
       </div>

最佳答案

问题不在于你的代码(除了 @appclay 指出的错误)。问题是jsfiddle。只需查看它生成的源代码即可。当您将任何内容放入“javascript”部分时,它会将其放入自己的命名空间中,从而防止访问该 block 之外的这些函数名称(例如,对 toggle1 的调用会引发未定义的函数错误) .

您可以通过将这些函数直接定义为 window. 属性来查看其实际效果。然后您的代码将按预期工作。请参阅http://jsfiddle.net/sQnd9/7/

在您自己的代码中,您可能不会将这些函数名称封装到它们自己的作用域中,并且它将按预期工作(但请再次注意,您应该进行 @appclay 指出的更改)。

此外,您可能不应该这样做。您应该将事件处理程序附加到 javascript block 中。

关于javascript - 通过触发和图片点击机制切换div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9866303/

相关文章:

css - 将内容 div 定位在仅 img div 下方

javascript - 使用映射和过滤器扩展语法

javascript - JS/jQuery 提醒其号码的 div 列表

html - 部分图片未显示

javascript - 将 SVG 转换为 jQuery 函数

javascript - 如何在单击按钮时同时运行表单操作和单击事件

javascript - HTML Range 元素更改 CSS 过滤器

javascript - 为什么不调用原型(prototype)中声明的函数?

javascript - Farbtastic 多字段 - Wordpress

javascript - 尝试使用循环将数组中的所有项目放入文本输入数据列表中