2016-02-18 61 views
1

根據窗口名稱,我想添加一個錨點Target =「Popup」或Target =「_ self」。如何根據窗口名稱切換錨點目標

我有兩個窗口:主題和彈出窗口。基於當前窗口,我想在兩個窗口中的一個窗口中顯示錨點結果。

從主題窗口:

<a href=」A」 target=」Topic」> 
Or 
<a href=」B」 target=」Popup」> 

從彈出窗口

<a href=」A」 target=」Topic」> 
Or 
<a href=」B」 target=」_self」> //don’t show smaller Popup in bigger Popup window 

而且IF語句無法正常工作。其他情況從未被發現?

HTML:

<p>OnClick link to <a href="MoreInformation.htm" onclick="isPopup();">More Information</a>.</p> 

的JavaScript:

<script type="text/javascript"> 
    var screenNam= window.name; 
    document.getElementById("winName").innerHTML=screenNam; 
</script> 

<script type="text/javascript"> 
    var isPopup = function() { 

    if (winName = "Popup") { 
    var change = document.getElementsByTagName("a"); 
    change.setAttribute("target", "_self"); 
    } 
    else if (winName = "topic") { 
    var change = document.getElementsByTagName('a'); 
    change.setAttribute('target', '_popup'); 
    } 
    } 
</script> 
+0

幾乎所有的線有問題?首先,爲什麼你有兩個腳本標籤?而第二個函數中的'winName',似乎沒有任何這樣的變量。最後,'getElementsByTagName'獲得一個nodelist,因此帶有*「s」*的*「... elements」*,以及一個nodelist沒有'setAttribute'方法。 – adeneo

+0

儘管出現明顯的初學者錯誤,但我仍然投票,因爲它具有實際應用並顯示出一些想法。 – Roberto

回答

0

你有正確的想法,但需要糾正一些錯誤,使工作。

請注意更改。比較兩個值時使用「==」。 getElementsByTagName返回一個集合。所以我們使用一個循環來修改每個錨點,例如change [i]。而未定義的變量winName已被screenNam取代。

您可以更多地改進此代碼,但我認爲這會使您朝着正確的方向開始。

延伸閱讀:Does it matter which equals operator I use in comparisons?

var screenNam = window.name; 

    document.getElementById("winName").innerHTML = screenNam; 

    function isPopup() { 

    var i, change = document.getElementsByTagName('a'); 

    for (i = 0; i < change.length; i++) { 
     if (screenNam == "Popup") { 
     change[i].setAttribute("target", "_self"); 
     } else if (screenNam == "topic") { 
     change[i].setAttribute('target', '_popup'); 
     } 
    } 

    }