动态设置href标签

时间:2016-03-15 05:11:44

标签: javascript jquery html

在我的页面上有2个像这样的href链接:

<a href="#">Name</a>
<a href="#">Phone</a>

用户所在的网址基于以下格式:

http://localhost/site/name/ASDF

我想要它以便网站自动填写像这样的href框

<a href="/site/name/ASDF">Name</a>
<a href="/site/phone/ASDF">Phone</a>

我知道我可以为每个a标签分配一个id,并让javascript设置href,但我想知道是否有办法做到这一点,而不必有一个设置它的功能页面已加载。

有没有办法像我想的那样去做?主要问题是ASDF,这是一个用户可以指定的唯一字符串,所以在带有URL的页面上:

http://localhost/site/name/John

2 href将是:

<a href="/site/name/John">Name</a>
<a href="/site/phone/John">Phone</a>

3 个答案:

答案 0 :(得分:1)

您应该获得current url然后split并获取dynamic名称,然后将其插入href标记。看到这个例子:

&#13;
&#13;
var fakeUrl = $('#fakeURL').text();
var split = fakeUrl.split('/');
var user = split.pop();

$('#name').attr('href','/site/name/'+user);
$('#phone').attr('href','/site/phone/'+user);
&#13;
#fakeURL {
  display: none;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="name" href="#">Name</a>
<a id="phone" href="#">Phone</a>

<span id="fakeURL">http://localhost/site/name/ASDF</span>
&#13;
&#13;
&#13;

或其他用户:

&#13;
&#13;
var fakeUrl = $('#fakeURL').text();
var split = fakeUrl.split('/');
var user = split.pop();

$('#name').attr('href','/site/name/'+user);
$('#phone').attr('href','/site/phone/'+user);
&#13;
#fakeURL {
  display: none;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="name" href="#">Name</a>
<a id="phone" href="#">Phone</a>

<span id="fakeURL">http://localhost/site/name/Jiff</span>
&#13;
&#13;
&#13;

这是一个示例,将从fake url读取您应该在您的服务器中使用此代码来获取real网址:

var url = window.location.href;
var split = url.split('/');
var user = split.pop();

$('#name').attr('href','/site/name/'+user);
$('#phone').attr('href','/site/phone/'+user);

<强> jsFiddle

答案 1 :(得分:0)

如果您的服务器端动态生成,那么您可以毫无问题地使用它。

如果您的链接是静态的,则需要使用javascript,因为部分href基于自己的属性。

如果你使用jquery,你不需要在链接中添加id来填充hrefs,但是,如果你的文档很大,那么脚本的效率应该非常低。

如果您向我提供有关您的用例的更多信息,我可以帮助您更好。

答案 2 :(得分:0)

你可以尝试这个..
使用查询字符串,如localhost / site?name = Max

然后这样做

$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].DIRECTORY_SEPARATOR.$_GET['name']