2014-10-22 2 views
1

В настоящее время я сталкиваюсь с проблемой, когда хочу только получить ссылки с class = "okPop" для открытия, тогда ссылки - это локальные html-файлы, называемые popupA.html и popupB.html , Чтобы остановить всплывающее окно по умолчанию, откройте ссылки, используя href. Я сделал href undefined. Теперь есть ссылки, которые ничего не делают. Я хочу, чтобы мой JS-код вызывал всплывающее окно, но ничего не происходит.Javascript не открывает ссылки для конкретных классов без HTML href

HTML код:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Popup Windows</title> 
    <!--[if lt IE 9]> 
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
    <![endif]--> 
</head> 
<body> 
    <!-- Script 9.4 - popups.html --> 
    <!-- Bullet 8: Add class --> 
    <p><a href="javascript:undefined" class="okPop" id="B" target="PopUp">B Link</a> (Will open in a new window.)</p> 
    <p><a href="javascript:undefined" class="1" id="A" target="PopUp">A Link</a> (Will open in a new window.)</p> 
    <script src="js/popups.js"></script> 
</body> 
</html> 

Javascript Код

// Function called when the link is clicked. 
function createPopup(e) { 
    'use strict'; 

    // Get the event object: 
    if (typeof e == 'undefined') var e = window.event; 

    // Get the event target: 
    var popupClass = e.class || e.srcElement; 


    var link = "popup" + document.getElementByID(id) + ".html"; 

    // Create the window: 
    var popup = window.open(link, 'PopUp', 'height=100,width=100,top=100,left=100,location=no,resizable=yes,scrollbars=yes'); 

    // Give the window focus if it's open: 
    if ((popup !== null) && !popup.closed) { 
     popup.focus(); 
     return false; // Prevent the default behavior. 
    } else { // Allow the default behavior. 
     return true; 
    } 

} // End of createPopup() function. 

// Establish functionality on window load: 
window.onload = function() { 
    'use strict'; 

    // Add the click handler to each link: 
    for (var i = 0, count = document.links.length; i < count; i++) { 
     // IF statement to trigger specific class value : Bullet 9 
     if (document.links[i].className == "okPop"){ 

      if (document.getElementsByClassName('okPop').value){ 

       popupLinks[i].onclick = createPopup; 

      }else{ 

       document.links[i].onclick = createPopup; 
    } // End of for loop. 




}; // End of onload function. 
+0

Является ли это ТОЧНОЙ копией/вставкой вашего JS-кода? – BrMcMullin

+0

Да, это ТОЧНАЯ копия/вставка. Зачем? – EsotericRider

+0

"" должно быть в . Он может не работать, если на него ссылаются после кода, который его использует. – jiy

ответ

2

Начнем с того, ваш сценарий имеет ряд синтаксических ошибок; вам не хватает двух закрывающих фигурных скобок в вашей функции window.onload. Он должен выглядеть следующим образом:

// Establish functionality on window load: 
window.onload = function() { 
    'use strict'; 

    // Add the click handler to each link: 
    for (var i = 0, count = document.links.length; i < count; i++) { 
     // IF statement to trigger specific class value : Bullet 9 
     if (document.links[i].className == "okPop"){ 

      if (document.getElementsByClassName('okPop').value){ 

       popupLinks[i].onclick = createPopup; 

      }else{ 

       document.links[i].onclick = createPopup; 
      } // close the 'else' case 
     } // close the 'if doc.links[i].classname' case 
    } // End of for loop. 

}; // End of onload function. 

После фиксации, что вы получите ссылочную ошибку от createPopup - идентификатор не определен. Кроме того, при создании вашей ссылки, вы просите весь элемент, если вы хотите только элемент ID:

// Function called when the link is clicked. 
function createPopup(e) { 
    'use strict'; 

    // Get the event object: 
    if (typeof e == 'undefined') { 
     // I personally always use braces for clarity. Also, redefining 
     // var e inside an if statement might not behave the way you expect. 
     e = window.event; 
    } 

    // Get the event target: 
    var popupClass = e.class || e.srcElement; 
    // you get the event target but then you never reference it.  

    //we already have the element, now use its id to construct the link: 
    var link = "popup" + popupClass.id + ".html"; 

    // Create the window: 
    var popup = window.open(link, 'PopUp', 'height=100,width=100,top=100,left=100,location=no,resizable=yes,scrollbars=yes'); 

    // Give the window focus if it's open: 
    if ((popup !== null) && !popup.closed) { 
     popup.focus(); 
     return false; // Prevent the default behavior. 
    } else { // Allow the default behavior. 
     return true; 
    } 

} // End of createPopup() function. 

Попробовать что - он работает на моем конце, но я только проверил его на Chrome.

+1

Спасибо за помощь! Поэтому он все еще не работает, но я думаю, потому что моя строковая ссылка не возвращает popup + «A» или «B» + .html. – EsotericRider

+1

Я пытаюсь понять способ передать символ A или B из HTML в javascript, чтобы завершить мою строку и поднять правую страницу. – EsotericRider

+0

D'oh! Пропущенная фиксация этой части. Исправлено редактирование. – BrMcMullin

Смежные вопросы