1

我在HTML文件中使用Javascript来展开和折叠文件的元素。Javascript适用于Chrome,但不适用于IE或Firefox

这是脚本:

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

回答

1

只是toggleBlock调用后添加

 return false ; 

0

此外,以Furqan的解决方案:

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

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

试试这个:

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; 
} 
相关问题