Javascript 加速递归函数
下面的功能将更改Javascript 加速递归函数,javascript,jquery,Javascript,Jquery,下面的功能将更改 因此,每次循环时,密度DPI将降低20 DPI 有没有一种方法可以加速这个过程,所以它通过比较以前的值的比率,在大约4个循环中完成。。。?我认为在x++之前应该有一个东西,它可以将5改大一点,这样$(window).width()==480就快多了 $(document).ready(function (){ $('meta[name="viewport"]').remove(); $('<meta name="viewport" id="
因此,每次循环时,密度DPI将降低20 DPI
有没有一种方法可以加速这个过程,所以它通过比较以前的值的比率,在大约4个循环中完成。。。?我认为在x++
之前应该有一个东西,它可以将5改大一点,这样$(window).width()==480
就快多了
$(document).ready(function (){
$('meta[name="viewport"]').remove();
$('<meta name="viewport" id="the_vp_special" content="width=320,target-densityDPI=250dpi"/>').appendTo('head');
setTimeout(function (){
var x = 0;
var changeDPI = function (curr){
x++;
var sub = 5;
if(x>500) return false;
var curr = curr?parseInt(curr):320;
curr = curr-sub;
var txt = $('<meta/>',{name:"viewport",id:"the_vp_special",content:"width=320,initial-scale=1,target-densityDPI="+(parseInt(curr))+"dpi"});
$('#the_vp_special').replaceWith(txt)
if($(window).width()==480) {}
else setTimeout(function (){ changeDPI(curr); },5);
}
changeDPI(250);
}, 2500);
});
$(文档).ready(函数(){
$('meta[name=“viewport”]”)。删除();
$('')。附于('head');
setTimeout(函数(){
var x=0;
var changeDPI=功能(当前){
x++;
var sub=5;
如果(x>500)返回false;
var curr=curr?parseInt(curr):320;
curr=curr sub;
var txt=$('',{name:“viewport”,id:“the_vp_special”,内容:“width=320,initial scale=1,target densityDPI=“+(parseInt(curr))+”dpi“});
$(“#"vp_special')。替换为(txt)
如果($(窗口).width()==480){}
else setTimeout(函数(){changeDPI(curr);},5);
}
更改dpi(250);
}, 2500);
});
请提问,如果这不清楚,我会尝试更好地解释。好的,让我直截了当地说:您想要的是将客户端的dpi设置为一个值
x
,以便客户端的视口的宽度精确地480px
现在,根据设置的dpi和显示的像素之间的关系,您有两个选项
$(函数)({
var dpi=250,
宽度;
$('meta[name=“viewport”]”)。删除();
$('')。附于('head');
setTimeout(函数(){
宽度=$(窗口).width();
dpi=数学圆((480*dpi)/宽度);
$('u vp_special')。替换为(
$('', {
名称:“视口”,
id:“特别节目”,
内容:“宽度=320…目标密度dpi=“+dpi+”dpi”
})
);
}, 2500);
});
(明天我会用一个例子更新我的帖子……等等)
您可以更改
2500ms
超时延迟吗?或者这是以我不知道的方式需要的?这不是问题,它只是在那里指示整个函数何时开始…只是更容易理解,我认为整个事情可以简化,如果我更改几次,并计算出它随精度增加或减少的比率,因为只有一个因素在变化,但是今天是星期五,我今天似乎不能做数学…,我知道窗口的宽度,我知道dpi是多少,所以我所需要的就是找到它们的变化率。。。每个dpi的宽度有多少像素:)像素和dpi之间的比率是恒定的吗?因为如果有,简单的交叉乘法就可以了。参见第3条,这与第1条中的操作完全相同(dpi=Math.round((480*dpi)/width);
),但没有超时(更好地接近IMHO)。不管怎样,很高兴你解决了这个问题。
$(function)( {
var dpi = 250,
width;
$('meta[name="viewport"]').remove();
$('<meta name="viewport" id="the_vp_special" content="width=320,target-densityDPI=250dpi"/>').appendTo('head');
setTimeout(function() {
width = $(window).width();
dpi = Math.round((480 * dpi) / width);
$('#the_vp_special').replaceWith(
$('<meta/>', {
name: "viewport",
id: "the_vp_special",
content: "width=320 ... target-densityDPI="+dpi+"dpi"
})
);
}, 2500);
});