您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
spicing up the soylent
// ==UserScript== // @name Soylent Stuff // @namespace http://tampermonkey.net/ // @version 0.1 // @description spicing up the soylent // @author You // @match http*://diy.soylent.com/recipes/* // @grant none // ==/UserScript== (function() { 'use strict'; // add function to format currency Number.prototype.formatMoney = function(c, d, t){ c = isNaN(c = Math.abs(c)) ? 2 : c; d = d === undefined ? "." : d; t = t === undefined ? "," : t; var n = this, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0; return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); }; // modify scaling selector $('.amount-selector').attr("id","select"); for (var week = 5; week<=52;week++){ $('#select').append($("<option></option>").attr("value",week * 7).text(week + " weeks")); } // target total row $('table.ingredients > tbody:nth-child(3) > tr').attr("id","total-row"); // change daily cost label $('#total-row > td:nth-child(1) > div:nth-child(2)').text('Total Cost'); // add data-daily to total cost $('#total-row > td:nth-child(2)').attr("id","cost"); $('#cost').attr("data-daily",$('#cost').text().replace("$", "")); // add data-daily to table $('table.ingredients > tbody:first() > tr > td:nth-child(4)').each(function (index,element) {$(element).addClass("cost");$(element).attr("data-daily",$(element).text().replace("$",""));}); $('#select').on("change",function () { $('[data-daily]').each(function(index){$(this).text("$" + Number.parseFloat($(this).attr("data-daily") * $('#select').val()).formatMoney("."));}); }); var amountNodes = $("[data-amount]"); var MutationObserver = window.MutationObserver || window.WebKitMutationObserver; var amountObserver = new MutationObserver (amountHandler); var amountConfig = { childList: true, characterData: true, attributes: true, subtree: true }; //--- Add a target node to the observer. Can only add one node at a time. amountNodes.each ( function () { //console.log($(this)); amountObserver.observe (this, amountConfig); } ); var factor = 1; function amountHandler (mutationRecords) { //console.info ("amountHandler:"); mutationRecords.forEach ( function (mutation) { // debugger; // console.log (mutation.type); //debugger var amount = mutation.addedNodes[0].parentElement; var cost = $(amount.parentElement).find("td.cost"); var newFactor = $(amount).text()/$(amount).attr("data-amount"); if (factor==1) {factor = newFactor;} console.log(factor); var newCost = $(cost).attr("data-daily")*factor; cost.text("$"+newCost.formatMoney(".")); if (typeof mutation.removedNodes == "object") { var jq = $(mutation.removedNodes); //console.log (jq); //console.log (jq.is("span.myclass2")); //console.log (jq.find("span") ); } } ); factor = 1; } })();