我有一个锚标记,它有一个本地href值,还有一个JavaScript函数,它使用href值,但将它定向到与正常情况略有不同的位置。标记看起来像这样
<a onclick="return follow(this);" href="sec/IF00.html"></a>
和一个看起来像这样的JavaScript函数
baseURL = 'http://www.someotherdomain.com/';
function follow(item) {
location.href = baseURL + item.href;
}
我本以为item.href
只会返回一个短字符串"sec/IF00.html",但它返回的却是完整的href,"http://www.thecurrentdomain.com/sec/IF00.html"。有没有办法只提取锚定<a>
标记中的短href ?还是会因为自然的超文本标记语言行为而丢失?
我想我可以使用字符串操作来做这件事,但这会变得很棘手,因为我的本地页面实际上可能是"http://www.thecurrentdomain.com/somedir/somepath/sec/IF00.html",并且我的href字段中可能有子目录,也可能没有子目录(例如ex href="page.html"
和href="sub/page.html"
),所以我不能总是删除最后一个斜杠之前的所有内容。
你可能想知道我为什么要这样做,因为这只会让页面变得更干净。如果不可能只获得短的href (就像放在锚<a>
标记中的那样),那么我可能只需要在标记中插入一个额外的字段,比如link="sec/IF00.html"
,但同样,这可能会有点混乱。
发布于 2013-03-16 02:44:20
下面的代码获取锚点指向的完整路径:
document.getElementById("aaa").href; // http://example.com/sec/IF00.html
而下面的一个获取href
属性的值:
document.getElementById("aaa").getAttribute("href"); // sec/IF00.html
发布于 2016-06-23 20:47:00
document.getElementById("link").getAttribute("href");
如果您有多个<a>
标记,例如:
<ul>
<li>
<a href="1"></a>
</li>
<li>
<a href="2"></a>
</li>
<li>
<a href="3"></a>
</li>
</ul>
您可以这样做:使用document.getElementById("link")[0].getAttribute("href");
来访问第一个<a>
标记数组,或者取决于您设置的条件。
发布于 2020-08-19 15:47:37
在我的例子中,我有一个带有#的href,而target.href会返回给我完整的url。Target.hash替我做了这件事。
$(".test a").on('click', function(e) {
console.log(e.target.href); // logs https://www.test.com/#test
console.log(e.target.hash); // logs #test
});
https://stackoverflow.com/questions/15439853
复制相似问题