Javascript 是否要更改没有id和jquery的链接的href?
我和一个客户一起工作,我只被允许使用javascript(不要问为什么,因为我不知道)。他们没有jquery设置,也不想要它(我再一次不知道为什么) 无论如何,页面上有一个链接,他们希望在页面加载时将href更改为。下面是链接结构Javascript 是否要更改没有id和jquery的链接的href?,javascript,onload,onload-event,Javascript,Onload,Onload Event,我和一个客户一起工作,我只被允许使用javascript(不要问为什么,因为我不知道)。他们没有jquery设置,也不想要它(我再一次不知道为什么) 无论如何,页面上有一个链接,他们希望在页面加载时将href更改为。下面是链接结构 <a class="checkout_link" title="Checkout" href="current_url">Checkout</a> 我想知道是否有任何方法可以使用上面链接的基本javascript更改页面加载时的href?
<a class="checkout_link" title="Checkout" href="current_url">Checkout</a>
我想知道是否有任何方法可以使用上面链接的基本javascript更改页面加载时的href?如果是这样的话,我该怎么做呢
谢谢这是
您应该使用ondomready事件,但要用普通语言编写它有点棘手(建议使用JavaScript框架)。因此,作为一种替代方法(不是实现您试图做的事情的最佳方式),是使用窗口加载(基于您的需求)。在JavaScript中,我们附加了一个函数来更改
基于JavaScript的标题是唯一的,并且在类属性中还包含checkout_链接:
window.onload = function() {
var tochange = document.getElementsByTagName('a');
for (var i = 0; i < tochange.length; i++) {
//checks for title match and also class name containment
if (tochange[i].title == 'Checkout' && tochange[i].className.match('(^|\\s+)checkout_link(\\s+|$)')) {
tochange[i].href = "http://www.google.com";
break; //break out of for loop once we find the element
}
}
}
window.onload=function(){
var tochange=document.getElementsByTagName('a');
对于(变量i=0;i
您可以通过对象的类名获取对象,请检查以下链接:
然后使用它来更改href
window.onload=function() {
var links = document.links; // or document.getElementsByTagName("a");
for (var i=0, n=links.length;i<n;i++) {
if (links[i].className==="checkout_link" && links[i].title==="Checkout") {
links[i].href="someotherurl.html";
break; // remove this line if there are more than one checkout link
}
}
}
更具选择性:
document.querySelector("a[title='Checkout'].checkout_link");
最后,更新的浏览器有一个类列表
if (links[i].classList.contains("checkout_link") ...
window.onload=function(){
警报(document.querySelector(“a[title='Checkout 2'].Checkout_link”).href);
}
当然可以使用普通的JavaScript,但是使用jQuery会容易得多-除了获取链接(使用getElementsByTagName()
并搜索结果数组)之外,您还需要执行onDOMLoad
而不是onload
。。。需要额外的代码才能跨浏览器工作。jQuery或其他库会使这变得非常容易。@Pekka除了domload之外,我认为jQuery没有特别的必要。@Dave你知道你想更改的特定
的独特特性吗?@mplungjan如果你想使用类名获取链接,并且想做到最后一个细节,您必须实现jQuery的.hasClass()
,它适用于多个类(class=“navigation checkout\u link”
),这也不是很简单。但OP可能不需要that@Pekka我同意你使用JS框架。框架提供的.hasClass和ondomready更易于使用,但我认为像OP提到的那样的特殊情况需要普通的JavaScript。但是,是的,ondomready是一个更好的方法,但是使用JS框架要容易得多。是的,它可以工作,但我根本无法访问html。因此我无法向链接添加id=/getElementsByTagName(“*”)
在我看来太膨胀了,改用getElementsByTagName(“a”)
。感谢链接的收藏,我想它比我建议的getElementsByTagName(“a”)
:)+1不错,不知道文档链接。两个注意事项:这将工作onload
,即当文档包括图像被完全加载时,这通常比加载DOM时要晚得多;类名需要完全匹配,因此不允许有多个类。如果你能接受这些限制,这是一种非常有效的方法。我们可以使用links[i].className.indexof(“checkout\u link”)=-1
如果可能more@mplungjan但是,这会产生误报,例如在签出链接上。一个好的正则表达式:newregexp('\\b'+classname+'\\b')代码>我务实的一面表明只有一个类。或者,我们可以删除类名测试,只匹配标题,我的务实的一面还告诉我,这个标题对于签出链接是唯一的
document.querySelector("a[title='Checkout'].checkout_link");
if (links[i].classList.contains("checkout_link") ...