Fraking功能函数,Functionman!
我有一个很大的功能,可以在DOM中搜索一个参数并将其替换为另一个参数:
function findAndReplace(searchText, replacement, searchNode) {
if (!searchText || typeof replacement === 'undefined') {
// Throw error here if you want...
return;
}
var regex = typeof searchText === 'string' ?
new RegExp(searchText, 'g') : searchText,
childNodes = (searchNode || document.body).childNodes,
cnLength = childNodes.length,
excludes = 'html,head,style,title,link,meta,script,object,iframe';
while (cnLength--) {
var currentNode = childNodes[cnLength];
if (currentNode.nodeType === 1 &&
(excludes + ',').indexOf(currentNode.nodeName.toLowerCase() + ',') === -1) {
arguments.callee(searchText, replacement, currentNode);
}
if (currentNode.nodeType !== 3 || !regex.test(currentNode.data)) {
continue;
}
var parent = currentNode.parentNode,
frag = (function () {
var html = currentNode.data.replace(regex, replacement),
wrap = document.createElement('div'),
frag = document.createDocumentFragment();
wrap.innerHTML = html;
while (wrap.firstChild) {
frag.appendChild(wrap.firstChild);
}
return frag;
})();
parent.insertBefore(frag, currentNode);
parent.removeChild(currentNode);
}
}
然后我有另一个小功能需要一美元金额并创建另一个数字:
function = oppCostCalc(dollarAmount) {
var wage = 7.25;
var costNum = Number(dollarAmount.replace(/[^0-9\.]+/g,""));
var oppCost = Math.round(costNum/wage);
return oppCost;
}
我要做的是创建一个大型函数,在页面中搜索dollarAmount,然后用oppCost替换所有出现的内容。
我能以某种方式将oppCostCalc挤入findAndReplace吗?其中一个主要问题是查找和替换都有输入和输出参数,我需要它只有输入并使用它来查找输出。我已经阅读了一些关于将两者包装在另一个函数中的内容,但这似乎是倒退了一步。
我不一定在寻找一个“这里是你的剧本”的答案,只是向正确的方向迈进。一旦我搞清楚,我会回来编辑这篇文章
感谢您的时间。