Javascript 从链接元素获取第一个属性
有一个小问题我正在解决。我有这个链接元素Javascript 从链接元素获取第一个属性,javascript,Javascript,有一个小问题我正在解决。我有这个链接元素 <a href="/web_send_message_widget.php?recipient_id=123456789">Message</a> 这就是没有用户登录时显示的内容,并将用户重新加载到登录页面。 但如果用户已登录,则会显示此信息 <a href="#" onlick="messagePopupShow({force_recipient_id:123456789}); return false;">M
<a href="/web_send_message_widget.php?recipient_id=123456789">Message</a>
这就是没有用户登录时显示的内容,并将用户重新加载到登录页面。
但如果用户已登录,则会显示此信息
<a href="#" onlick="messagePopupShow({force_recipient_id:123456789}); return false;">Message</a>
在这两种情况下,我都试图获取123456789
ID号。link元素在DOM中的位置不变,但属性不同
然后在这两种情况下也拆分结果以仅获得ID号
如果可能,所有操作都是用纯JavaScript完成的。最好检查这两种情况,因为您知道这些情况(
href
或onclick
),并且您可能无法始终保证它将是标记中指定的第一个属性。如果将来有任何页面需要更新,等等
以下是我的建议:
function getRecipientId(a) {
// look for the recipientId in the href
var matches = $(a).attr('href').match(/^.*recipient_id=(\d+)/);
if (matches && matches.length > 0) {
return matches[1];
}
// look for the recipientId in the onclick
var matches = $(a).attr('onclick').match(/^.*force_recipient_id:(\d+)/);
if (matches && matches.length > 0) {
return matches[1];
}
return false;
}
您可以这样称呼它:getRecipient('a#linkId')代码>
通过这种方式,您还可以方便地在将来添加其他案例,并且无需确保收件人id始终位于每个链接的第一个属性中
干杯 在纯Javascript中,我会执行以下操作:
var anchors = document.getElementsByTagName('a');
for (var i = 0; i < anchors.length; i++) {
if (anchors[i].getAttribute('href')){
var m = anchors[i].getAttribute('href').match(/[?&]+recipient_id=(\d+)/);
if (m && m.length > 1){
return m[1];
}
}
if (anchors[i].getAttribute('onclick')){
var m = anchors[i].getAttribute('onclick').match(/force_recipient_id:(\d+)/);
if (m && m.length > 1){
return m[1];
}
}
}
var-anchors=document.getElementsByTagName('a');
对于(var i=0;i1){
返回m[1];
}
}
if(锚定[i].getAttribute('onclick')){
var m=anchors[i].getAttribute('onclick').match(/force\u recipient\u id:(\d+/);
如果(米和米长度>1){
返回m[1];
}
}
}
此“属性顺序”仅存在于HTML代码中,而不存在于DOM中。(除此之外,你说你感兴趣的部分是你第二个HTML代码片段中的第二个属性——如果你真的要寻找“第一个”,你只会得到href
属性的#
。)所以你的整个问题没有什么意义。在第一种情况下,你想要“/web\u-send…”在第二种情况下,你想得到“#”值吗?我想您可以使用一些anchor=document.getElement。。。方法,并且,anchor.href值应该包含您想要的内容…如果是这样的话。老实说,我跳过了第一个href=“#”。我想我的问题是不可能的。我不知道你用什么来呈现你的HTML,但是你可以用你想要获取的值向元素添加一个“data-”属性吗?HTML是由一个不是我的主机呈现的。否则我会的。但是,检查网站的用户中有90%都已登录,因此我将坚持单击onClick
,如果用户未登录,我将发出警报()我只是想知道这是否可行。谢谢你的帮助。这将是非常有用的!