繁体   English   中英

Javascript适用于Chrome,但不适用于IE或Firefox

[英]Javascript works in Chrome but not IE or Firefox

我在HTML文件中使用Javascript展开和折叠文件的元素。

这是脚本:

function toggleBlock(pstrID){
  var myDiv = document.getElementById('d' + pstrID);
  if (myDiv){
    if (myDiv.style.display == 'none'){
      showBlock(pstrID);
    } else{
      hideBlock(pstrID);
    }
  }
}
function showBlock(pstrID){
  var myDiv = document.getElementById('d' + pstrID);
  if (myDiv){
    myDiv.style.display = 'block';
    var myImage = document.getElementById('i' + pstrID);
    if (myImage){
      myImage.src = 'arrowdown.gif';
      myImage.alt = 'Hide';
    }
    if (document.location.href.indexOf('mk:@') == 0)
      myDiv.innerHTML = myDiv.innerHTML;
  }
}
function hideBlock(pstrID){
  var myDiv = document.getElementById('d' + pstrID);
  if (myDiv){
    myDiv.style.display = 'none';
    var myImage = document.getElementById('i' + pstrID);
    if (myImage){
      myImage.src = 'arrowright.gif';
      myImage.alt = 'Show';
    }
    if (document.location.href.indexOf('mk:@') == 0)
      myDiv.innerHTML = myDiv.innerHTML;
  }
}

调用脚本时,使用以下命令:

<a id="h7217" class="expandingblocktemplate" title="" href="javascript:toggleBlock('7217')">
  • 在Chrome中,一切正常。

  • 在IE中,单击链接会转到另一个窗口(显示的地址显然是javascript:toggleBlock('7217'),数字取决于所单击的链接),并显示错误“ Internet Explorer无法显示网页”。

  • 在Firefox中,出现一个新标签,错误控制台显示:
    错误:未定义toggleBlock
    源文件:javascript:toggleBlock('7217')
    行数:1

只需添加

      return false ; 

在toggleBlock调用之后。

除了Furqan的解决方案之外:

您永远不要在href属性中触发JavaScript。 这是一种非标准方法,很容易导致错误,特别是如果您不知道自己在做什么的时候。 改用onclick并将有效的URL放在非脚本用户的href属性中,如果您不关心非脚本用户,则使用href="#"

<a id="h7217" class="expandingblocktemplate" title="" onclick="toggleBlock('7217');" href="noscript.html">

尝试这个:

HTML:

<a href="#" onclick="toggleBlock('7217')">

JavaScript:

function toggleBlock(pstrID) {
    var block = document.getElementById('d' + pstrID),
        img = document.getElementById('i' + pstrID);

    if ( block && img ) {    
        if ( block.style.display === 'none' ) {
            block.style.display = 'block';
            img.src ='arrowdown.gif';
            img.alt = 'Hide'; 
        } else {
            block.style.display = 'none';
            img.src = 'arrowright.gif';
            img.alt = 'Show';      
        }   

        if ( document.location.href.indexOf('mk:@') === 0 ) {
            block.innerHTML = block.innerHTML;
        }
    }

    return false;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM