2014-01-16 47 views
0

我創建了一個點擊以在我客戶的某個網站上顯示選項。那裏工作完美。 其各自的代碼如下。外部鏈接無法正常工作html/javascript

<style> 
a{padding:0;margin:0;color:#009cbb;font-weight:bold;text-decoration:none;} 
</style> 
<p> 
<div><a href="#welcome" onclick="toggle_visibility('welcome');">Welcome</a></div> 
<div id="welcome" style="display:none;">This is test</div> 

<div><a href="#focus" onclick="toggle_visibility('focus');">Focus</a></div> 
<div id="focus" style="display:none;">This is test2 
</div> 

<div><a href="#cataracts" onclick="toggle_visibility('cataracts');">Cataracts</a></div> 
<div id="cataracts" style="display:none;">This is test2 
</div> 
</p> 
<script type="text/javascript"> 
function toggle_visibility(id) { 
var e = document.getElementById(id); 
if(e.style.display == 'block') 
e.style.display = 'none'; 
else 
e.style.display = 'block'; 
} 
</script> 

當我從外部友情鏈接test1的它應該顯示test1的,密切的其他2,但問題是,當我點擊它顯示了它們作爲封閉的鏈接。

的鏈接代碼是

<a href="http://website.com/page.php#welcome" style="color:#009bd9;text-decoration:none;">Read More ></a> 

請幫助我,當有人點擊閱讀更多顯示歡迎信息開放和他人關閉。

由於

+0

感謝您的快速反應兄弟,對不起,沒有奏效。 – Bangash

+0

您是否嘗試過我的答案? – Merlin

回答

1

嘗試這 - 在IE8,Chrome32和FX 24測試了使用此格式的每個鏈路上的窗口

Live Demo Live Demo With Hash

function toggle_visibility(link) { 
    var id = link.hash.substring(1); 
    var obj = document.getElementById(id); 
    if (obj) obj.style.display = obj.style.display == "block"?"none":"block"; 
    return false; 
} 
window.onload=function() { 
    var id = location.hash?location.hash.substring(1):""; 
    if (id) document.getElementById(id).style.display="block"; 
} 

(它應該也被重構爲不顯眼)

onclick="return toggle_visibility(this);" 

請注意(本)

+0

對不起,兄弟也沒有工作 – Bangash

+0

@mplungjan我編輯你的代碼,因爲它在語法上不正確。現在你回滾了,它不再是錯誤的,因爲你不關閉塊的字符串。 – SoonDead

+0

對 - 謝謝。你的修復失去了惱人的空間變化:/ – mplungjan

0

FIDDLE

window.onload = function(){ 
     toggle_visibility(window.location.hash.substring(1)); 
} 
1

HA我終於想通了,你想要的!

所以如果鏈接以#element_id結尾,您希望在頁面加載時打開元素。

您的腳本當前標籤:

<script type="text/javascript"> 
    function toggle_visibility(id) { 
    var e = document.getElementById(id); 
    if(e.style.display == 'block') 
    e.style.display = 'none'; 
    else 
    e.style.display = 'block'; 
    } 
</script> 

將其更改爲:

<script type="text/javascript"> 
    function toggle_visibility(id) { 
     var e = document.getElementById(id); 
     if(e.style.display == 'block') e.style.display = 'none'; 
     else e.style.display = 'block'; 
    } 

    var parts = window.location.split('#'), 
     hash = ''; 
    if (parts.length > 1) { 
     hash = parts[1]; 
    }  
    if (hash !== '') { 
     toggle_visibility(hash); 
    } 
</script> 

編輯:

window.location.hash顯然是支持無處不在。你可能想用這個來代替string.split()

+0

對不起再兄弟 – Bangash

+0

@Bangash告訴我這個:我有正確理解你的問題嗎?如果url包含'#something'部分,您是否希望元素在頁面加載時可見(打開)? – SoonDead

+0

是的,你得到了正確的點 – Bangash

0

雖然我沒有清楚地理解你的問題,但我已經根據我的假設修改了你的函數。

function toggle_visibility(id) { 
    var e = document.getElementById(id); 
    if (e.style.display == 'block' || e.style.visibility == 'visible') { 
     e.style.display = 'none'; 
     e.style.visibility = "hidden"; 
    } else { 
     e.style.display = 'block'; 
     e.style.visibility = 'visible'; 
    } 
} 

請讓我們知道您所需要的修改是什麼。