JS通过ID重写每个href链接

时间:2014-01-15 16:38:52

标签: javascript hyperlink rewrite href

我有一个带有<a>标记链接的页面,指向JS脚本(模式窗口),但是如果有人来了并关闭了JS,那么这个页面将不起作用。所以我想在功能上实现它两种情况,JS打开和关闭..

这是用JS脚本重写“href”链接的想法。

JS off:

<a id="first" href="main.php?page=something">Link</a>

JS on:

<a id="first" href="#something">Link</a>

我试试这个:

<a id="first" href="main.php?page=something">Link</a>

<script type="text/javascript">
document.getElementById("first").href= "#something";
</script>

但这只是将“#something”添加到文件名中(例如:如果文件名为something.php,URL将是“something.php#something”)并且不重写它..

有什么建议真的很简单吗?在ID上工作,因为有几个链接需要重新编写..而且没有jQuery请...

3 个答案:

答案 0 :(得分:1)

试一试。

for (var i = 0, links = document.links; i < links.length; ++i) {
    if (links[i].search.indexOf("page=") > -1)
        links[i].href = "#" + links[i].search.split("page=")[1].split("&")[0]
}

http://jsfiddle.net/CByhw/

答案 1 :(得分:0)

你是什​​么意思?使用你的例子,它将它重写为#something而不是something.php#something ...

document.getElementById("first").href= "#something";

jsfiddle

答案 2 :(得分:0)

最简单的方法是将click事件添加到应显示模态对话框的所有链接。

HTML:

<a href="main.php?page=something" data-modal="something">Link</a>

JavaScript的:

var anchors = document.querySelectorAll('a[data-modal]');
for (var i = 0, len = anchors.length; i < len; i++) {
    anchors[i].addEventListener('click', function(e) {
        var modal = this.getAttribute('data-modal');
        showModal(document.getElementById(modal));
        e.preventDefault();
    }, false);
}

DEMO: http://jsfiddle.net/wE3NC/