2014-01-16 48 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'; 
    } 
} 

请让我们知道您所需要的修改是什么。