Javascript 是否要更改没有id和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?

我和一个客户一起工作,我只被允许使用javascript(不要问为什么,因为我不知道)。他们没有jquery设置,也不想要它(我再一次不知道为什么)

无论如何,页面上有一个链接,他们希望在页面加载时将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") ...