0

ウェブサイトのページソースの一部です。最後の行で「 crsEdId=78 」を取得する必要があります。JavaScript または JQuery を使用します。

この作業には mozilla Jetpack を使用します。

このコードを最初に取得するにはどうすればよいですか? そして何をすべきか(正規表現または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);

});
}
});    

今、この course_menu 内のすべての href を取得する必要があります!! それを手伝ってくれませんか?

4

4 に答える 4

1

多分私は何かが欠けているかもしれませんが、その要素のhrefを取得してから、RegExを使用して必要なものを取得することはできませんか?

于 2010-01-15T01:16:56.260 に答える
0

現在のタブにドキュメントがある場合、Jetpackは次のようにドキュメントを提供すると思います。

var doc= jetpack.tabs.focused.contentDocument;

次に、プレーンJSで、最も適切な方法でリンクを取得します。たとえば、2番目のリストアイテムから最初のリンクを取得するには、次のようにします。

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

Jetpackを使用している場合は、おそらく、Selectors-APIをネイティブでサポートするのに十分な新しいバージョンのFirefoxに依存できるため、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));
    }
}
于 2010-01-15T01:47:35.483 に答える
0

jQuery の場合:

var matches = $('a').attr('href').match(/crsEdId=(\d+)/);
于 2010-01-15T01:17:53.557 に答える
0

試す:

alert($('#courses_menu').children('li').get(2).attr('href'));
于 2010-01-15T01:18:25.327 に答える