我遇到了一个小问题。我有这个链接元素。
<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
身份证号码。 link元素不会改变DOM中的位置,但属性是不同的。
然后还将结果分开以获得两种情况下的ID号?
如果可能的话,所有这些都是用纯JavaScript完成的。
答案 0 :(得分:1)
最好检查这两种情况,因为您知道案例(href
或onclick
),并且您可能无法始终保证它将是指定的第一个属性在a
标记中。如果将来要更新任何页面等,
以下是我的建议:
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');
。
通过这种方式,您还可以在将来轻松添加其他案例,并且您无需确保recipient_id始终位于每个链接的第一个属性中。
干杯!
答案 1 :(得分:1)
在纯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];
}
}
}
<强> FIDDLE 强>