这不是完全必要的,我只是想简化我的代码。这就是我所拥有的:
function fillWebsitePlaceFiller(number) {
document.getElementById("placefillerWebsite" + number).innerHTML = placefillerWebsite;
}
fillWebsitePlaceFiller(1);
fillWebsitePlaceFiller(2);
fillWebsitePlaceFiller(3);
fillWebsitePlaceFiller(4);
fillWebsitePlaceFiller(5);
fillWebsitePlaceFiller(6);
fillWebsitePlaceFiller(7);
有没有办法可以只调用一次这个函数,每个参数会运行7次?
答案 0 :(得分:39)
方法1 - 迭代
for (var i = 1; i < 8; i++) fillWebsitePlaceFilter(i);
方法2 - 递归
(function repeat(number) {
fillWebsitePlaceFiller(number);
if (number > 1) repeat(number - 1);
})(7);
方法3 - 仿函数应用
[1, 2, 3, 4, 5, 6, 7].forEach(fillWebsitePlaceFiller);
方法4 - 内部迭代
function fillWebsitePlaceFiller(times) {
for (var number = 1; number <= times; number++) {
document.getElementById("placefillerWebsite" + number).innerHTML = placefillerWebsite;
}
}
方法5 - 扩展功能行为
Function.prototype.sequence = function(from, to) {
for (var i = from; i <= to; i++) this.call(null, i);
};
fillWebsitePlaceFiller.sequence(1, 7);
方法6 - XPath(警告:未测试)
var query = '//*[@id[starts-with(., "placefillerWebsite"]]';
var result = document.evaluate(query, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
while (var node = result.iterateNext()) node.innerHTML = placefillerWebsite;
方法7 - JQuery
$('[id^="placefillerWebsite"]').html(placefillerWebsite)
我建议您不要假设其中有七种方法。
答案 1 :(得分:9)
使用ES6可以更优雅地解决这个问题:
window.location.href = 'your url goes here';
答案 2 :(得分:4)
一个简单的for循环!
for (var i = 1; i <= 7; ++i) {
fillWebsitePlaceFiller(i);
}
或者,同样容易,修改fillWebsitePlaceFiller以执行自己的for循环:
function fillWebsitePlaceFiller() {
for (var i = 1; i <= 7; ++i) {
document.getElementById("placefillerWebsite" + i).innerHTML = placefillerWebsite;
}
}
答案 3 :(得分:3)
像
这样的东西 function fillWebsitePlaceFiller(number) {
for(i =0; i < number; i++)
document.getElementById("placefillerWebsite" + i).innerHTML = placefillerWebsite;
}
答案 4 :(得分:2)
使用循环
function doTimes(number) {
for (var i = 0; i < number; i++) {
fillWebsitePlaceFiller(i);
}
}
doTimes(7);
答案 5 :(得分:0)
多次迭代一个函数的最佳,最简便的方法是使用qalllib
优点-1.根据要求迭代同步/异步 2.不违反承诺 3.以单个数组的形式返回所有结果 Promise.all
示例:https://www.npmjs.com/package/qalllib
npm i qalllib
const qall = require('qalllib')
function doSomething(params)
{
return new Promise((resolve,reject){
//operations
})
}
qall.qAsyncAll(doSomething, [arg1,
arg2,arg3],3)
.then((response)=>{
console.log(response)
}) //catchBlock
说明:-
qall.qAsyncAll(functionName without brackets,
arrayOfArguments, arrayOfArguments.length)
其他示例
示例
let _ = require('underscore')
let response = ['some data','other data']
return Promise.all(_.map(response, function (data) { return
functionName(data) }))
.then((response)=>{
console.log(response)
})
结果
['response1','response2']