如何使用javaScript从网站(页面源)中的href中获取文本?

时间:2010-01-15 01:10:55

标签: javascript html href

这是网站页面源的一部分。 我需要在最后一行抓住“crsEdId = 78”。使用JavaScript或JQuery。

我将使用mozilla Jetpack来完成任务。

我如何首先获取此代码? 和做什么(RegEx或JQuery)就可以了!?

<div class="tools-menu-body" id="tools-menu-div" style="display: none;">
        <div id="menu_glider">
            <div class="scroller">
                <div class="content">
                     <div class="section" id="courses_menu">
                        <ul class="tools-menu-ul">
                            <li class="tools-menu-back"><a href="#main_menu" class="controls">back</a></li>
<li><a title="Advanced Software Engineering Lab: Open Source Development" href="../Courses/CourseEdition.aspx?crsEdId=78">CSEN 914 </a></li>

IT WorkED:

好吧,这是一个愚蠢的事情 - 我只需要将选择器放在点击功能中,不知道为什么我之前没想过它。

  jetpack.statusBar.append({
  html: "Boom<i>!</i>",
  width: 45,
  onReady: function(widget){
      $(widget).click(function(){
             var doc= jetpack.tabs.focused.contentDocument;
             var link= doc.querySelector('#courses_menu > ul > li:nth-child(2) a');
             var test= doc.getElementById('#container'); 
             jetpack.notifications.show("Course is is = "+ link);

});
}
});    

现在我需要在这个课程中获得所有href!菜单!你可以帮忙吗?

4 个答案:

答案 0 :(得分:1)

也许我错过了一些东西,但是你不能只获得该元素的href,然后使用RegEx获得你想要的东西吗?

答案 1 :(得分:0)

在jQuery中:

var matches = $('a').attr('href').match(/crsEdId=(\d+)/);

答案 2 :(得分:0)

尝试:

alert($('#courses_menu').children('li').get(2).attr('href'));

答案 3 :(得分:0)

如果您在当前标签中找到了该文档,我相信Jetpack会给您:

var doc= jetpack.tabs.focused.contentDocument;

然后在简单的JS中,通过最合适的方式获取链接。例如,从第二个列表项获取第一个链接:

var menu= doc.getElementById('courses_menu');
var link= menu.getElementsByTagName('li')[1].getElementsByTagName('a')[0];

如果你使用的是Jetpack,你可以依靠足够新版本的Firefox来获得Selectors-API的原生支持,这样你就可以在不使用jQuery之类的额外库的情况下更轻松地获得它,例如:

var link= doc.querySelector('#courses_menu>ul>li:nth-child(2) a');

现在,old-school DOM Level 0为您提供了几个简单的属性,可以在链接中获取URL的各个部分,而无需使用不可靠的正则表达式处理。如果您想要整个查询字符串crsEdId=78,您可以说:

var query= link.search.substring(1);

(子字符串将取消任何前导?个字符。)

如果可能有更多查询参数,并且您想要专门找到名为crsEdId的查询参数,则必须完全处理查询,例如:

var crsEdId= getParameter(query, 'crsEdId');

function getParameter(query, name) {
    var pars= query.split(/[&;]/g);
    for (var i= pars.length; i-->0;) {
        var n= pars[i].split('=')[0];
        if (decodeURIComponent(n)===name)
            return decodeURIComponent(pars[i].substring(n.length+1));
    }
}