从link元素获取第一个属性

时间:2014-03-12 21:34:32

标签: javascript

我遇到了一个小问题。我有这个链接元素。

<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完成的。​​

2 个答案:

答案 0 :(得分:1)

最好检查这两种情况,因为您知道案例(hrefonclick),并且您可能无法始终保证它将是指定的第一个属性在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