Javascript работает в Chrome, но не IE или Firefox - PullRequest
1 голос
/ 02 марта 2011

Я использую Javascript в HTML-файле, чтобы развернуть и свернуть элементы файла.

Это сценарий:

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

Ответы [ 3 ]

1 голос
/ 02 марта 2011

просто добавьте

      return false ; 

после вызова toggleBlock.

0 голосов
/ 02 марта 2011

Попробуйте это:

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;
}
0 голосов
/ 02 марта 2011

В дополнение к решению Furqan:

Вы никогда не должны запускать JavaScript в атрибуте href.Это нестандартный метод, который легко приводит к ошибкам, особенно если вы не знаете, что делаете.Вместо этого используйте onclick и укажите действительный URL-адрес в атрибуте href для пользователей, не являющихся сценариями, или используйте href="#", если вас не волнуют пользователи, не являющиеся сценариями.

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