1

J'utilise Javascript dans un fichier HTML pour développer et réduire des éléments du fichier.Javascript fonctionne dans Chrome mais pas IE ou Firefox

Voici le script:

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; 
    } 
} 

Quand j'appelle le script, j'utilise les éléments suivants:

<a id="h7217" class="expandingblocktemplate" title="" href="javascript:toggleBlock('7217')"> 
  • En Chrome tout fonctionne bien. Dans IE, en cliquant sur le lien mène à une fenêtre différente (l'adresse affichée est javascript: toggleBlock ('7217') évidemment, le nombre dépend du lien sur lequel vous avez cliqué) et l'erreur "Internet Explorer ne peut pas afficher la page Web" .

  • Dans Firefox, un nouvel onglet apparaît et l'erreur indique la console:
    Erreur: toggleBlock n'est pas défini
    Fichier source: javascript: toggleBlock ('7217')
    ligne: 1

Répondre

1

ajouter simplement

 return false ; 

après l'appel toggleBlock.

0

De plus à la solution de Furqan:

Vous ne devriez jamais déclencher JavaScript dans l'attribut href. C'est une méthode non standard qui conduit facilement à des erreurs, surtout si vous ne savez pas ce que vous faites. Utilisez onclick à la place et placez une URL valide dans l'attribut href pour les utilisateurs non script, ou utilisez href="#" si vous ne vous souciez pas des utilisateurs non script.

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

Essayez ceci:

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; 
} 
Questions connexes