【问题标题】:how can i grab a text from a href in a website (page source) using javaScript?如何使用 JavaScript 从网站(页面源)中的 href 获取文本?
【发布时间】:2011-01-05 08:13:42
【问题描述】:

这是网站页面源的一部分。 我需要在最后一行抓住“ 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>

成功了:

好吧,这是一件愚蠢的事情 - 我只需要将选择器放在点击功能中,不知道为什么我没有早点考虑它。

  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 !!你能帮忙吗?

【问题讨论】:

    标签: javascript html href


    【解决方案1】:

    也许我遗漏了一些东西,但你不能只获取那个元素的 href,然后使用 RegEx 来得到你想要的吗?

    【讨论】:

    • 我是 JavaScript 和 RegEx 的新手,你能告诉我这是如何工作的吗!?或链接我!
    • 我在想一些与 andybaird 发布的内容类似的东西。但是您可能需要在选择器中更加具体。
    【解决方案2】:

    在 jQuery 中:

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

    【讨论】:

    • Jetpack 输出 $("a").attr("href") 未定义
    【解决方案3】:

    试试:

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

    【讨论】:

      【解决方案4】:

      如果您在当前选项卡中获得了该文档,我相信 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');
      

      现在,老式的 DOM 级别 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));
          }
      }
      

      【讨论】:

      • 它给了我空!这是我试图在met.guc.edu.eg 上工作的网站,这就是我试图做的代码 var doc= jetpack.tabs.focused.contentDocument; var link= doc.querySelector('#courses_menu>ul>li>li:nth-child(2) a'); jetpack.statusBar.append({ html: "Boom!", width: 45, onReady: function(widget){ $(widget).click(function(){ jetpack.notifications.show(" "+link+" " ); }); } });
      • 该选择器中似乎有一个额外的虚假&gt;li
      • 是的,我只是在尝试一些东西-..不管有没有它,它仍然给我null
      • 你到底从哪里得到空值? link 是否为空?你能自己得到#courses_menu吗?哪一部分在这里失败了?
      • 链接给我null,我正在打印链接,我会尝试调试它,(在JS中有点新)
      猜你喜欢
      • 2020-09-07
      • 1970-01-01
      • 2011-05-13
      • 2011-03-10
      • 2015-08-27
      • 2021-01-01
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多