How to change a link's text based on different phrasing of the link's title attribute?

时光毁灭记忆、已成空白 提交于 2020-01-14 03:23:26

问题


In my Fantasy football page, it gives stats about the opposing team and when you mouseover it tells you how many points they give up (See picture).

Here is the relevant code pertaining to this:

<a class="Inline F-rank-good" title="WAS gives up the 3rd most fantasy points to the QB position." target="_blank" href="/f1/777400/pointsagainst?pos=QB&ntid=28">Was</a>

How do I create a Greasemonkey script that will add the # to the end of the team name (i.e. "Was" becomes "Was - 3"

One problem there is, is that sometimes the rank says it gives up the "2nd fewest points", in which case you would have to do 32-2 to get the absolute rank.


回答1:


Extract the number from the title attribute, using regex that switches based on the surrounding text.

The following, complete but untested, Greasemonkey script illustrates the process:

// ==UserScript==
// @name     FF, stat delinker
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/
waitForKeyElements ("a.Inline", delinkChangeStat);

function delinkChangeStat (jNode) {
    var rawText     = jNode.attr ("title")  ||  "";
    var deltaText   = "";
    var mtchResult  = null;

    //-- IMPORTANT: the single =, in the if() statements, is deliberate.

    //-- Like "gives up the 3rd most"
    if (mtchResult  = rawText.match (/gives up the (\d+)[a-t]{2} most/i) ) {
        deltaText   = mtchResult[1]; 
    }
    //-- Like "gives up the 2nd fewest points"
    else if (mtchResult = rawText.match (/gives up the (\d+)[a-t]{2} fewest/i) ) {
        deltaText   = 32 - parseInt (mtchResult[1], 10); 
    }
    //-- ADD ADDITIONAL else if() CLAUSES HERE AS NEEDED.

    //-- Change the link
    if (deltaText) {
        jNode.text (jNode.text () + " - " + deltaText);
    }
}


来源:https://stackoverflow.com/questions/26533871/how-to-change-a-links-text-based-on-different-phrasing-of-the-links-title-attr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!