JavaScript Accordion 菜单适用于 IE,不适用于 Chrome 或 Firefox

标签 javascript jquery html internet-explorer google-chrome

以下代码在 IE 中运行良好,但在 Chrome 或 Firefox 中不起作用。

在 Chrome 中,只需在 URL 末尾附加 # 并闪烁屏幕。就好像它正在调用该网址一样。我知道它是一个较旧的脚本,它完全符合我在 ie 中的要求。 任何帮助将不胜感激。

 <script type="text/javascript">

function expandCollapse(elem, changeImage) {
 if (document.getElementById) {
ecBlock = document.getElementById(elem);
if (ecBlock != undefined && ecBlock != null) {
  if (changeImage) {
    //gets the image associated
    elemImage = document.getElementById(elem + "Image");
  }
  //make sure elemImage is good
  if (!changeImage || (elemImage != undefined && elemImage != null)) {
    if (ecBlock.currentStyle.display == "none" || ecBlock.currentStyle.display == null || ecBlock.currentStyle.display == "") {
      //shows the info.
      ecBlock.style.display = "block";
      if (changeImage) {
        //Just got in expanded mode. Thus, change image to "collapse"
        elemImage.src = "images/up.png";
      }
    }
    else if (ecBlock.currentStyle.display == "block") {
      //hide info
      ecBlock.style.display = "none";
      if (changeImage) {
        //Just got in collapsed mode. Thus, change image to "expand"
        elemImage.src = "images/down.png";
      }
    }
    else {
      //catch any weird circumstances.
      ecBlock.style.display = "block";
      if (changeImage) {
        elemImage.src = "images/up.png";
      }
    }
  }
  //end check elemImage
}
//end check ecBlock
  }
//end getElemById
//end expandCollapse function
</script>    

我创建的其中一行是

<h4>
<tr>
<td valign="top">
    <a href="#" onclick="javascript:expandCollapse('infoBlockID3', true); return false;"><img src="images/down.png" id="infoBlockID3Image" border="0" class="actionIcon" alt="How long will it take to hear fom an adjuster?" align=absmiddle>How long will it take to hear fom an adjuster?</a>
  </td>
  <td valign="top">
    <span id="moreInfoContainer"></span>
    <noscript><ID id="moreInformation">How long will it take to hear fom an adjuster?           </ID></noscript>
  </td>
</tr>
</table>
</h4>

<div id="infoBlockID3" style="display: none" class='BodyText'>
  <p>2nd Line goes here
<ul>
  <li>Another Line</li>
  <li>Last Line</li>
</ul>
</p>
</div>

非常感谢您的帮助。如果我能完成这两项工作,这将对我有很大帮助。

最佳答案

Chrome、Firefox 或除 Internet Explorer 或 Opera 之外的任何其他浏览器都不支持元素的 currentStyle 属性。 为了解决您的问题,只需将 'currentStyle' 替换为 'style':

if (ecBlock.currentStyle.display == "none" || ecBlock.currentStyle.display == null || ecBlock.currentStyle.display == "") {

应该是

if (ecBlock.style.display == "none" || ecBlock.style.display == null || ecBlock.style.display == "") {

else if (ecBlock.currentStyle.display == "block") {

应该是

else if (ecBlock.style.display == "block") {

关于JavaScript Accordion 菜单适用于 IE,不适用于 Chrome 或 Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25246790/

相关文章:

javascript - 原子包: hide developer keys

jquery - 将以下三元运算符转换为常规 if 语句?

jquery - 从一个 CDN 或多个 CDNS 加载文件

以字符串结尾的javascript正则表达式 float

JavaScript 将函数参数与返回值一起传递出去

javascript - 使用 Backbone 事件来切换 Collection View 属性或 jQuery.siblings()?

javascript - 如何在onclick时刷新特定div而不丢失动态数据

html - 如何将 React 应用程序构建为另一个网站中的小部件

javascript - 当用户使用shift+enter提交时如何创建一个新的文本区域?

html - 如何在网站上放置书签图标(favicon)