Javascript 为什么赢了';这个半圆不长吗?
基本上, 我有两个半圆。其中一个(圆0)为等半径,内半圆(圆1,带梯度)为变半径。圆圈1的初始值为圆圈0半径的1% 我想在目标框(0-100)中输入一个圆1的新半径值。我以100毫秒为间隔,在圆圈1的半径上做了1%的步长,以显示它在增长,但它似乎不起作用。 我不太擅长javascript/jquery,但非常感谢您的帮助 请参见此处的演示: 以下是我的javascript:Javascript 为什么赢了';这个半圆不长吗?,javascript,jquery,css,Javascript,Jquery,Css,基本上, 我有两个半圆。其中一个(圆0)为等半径,内半圆(圆1,带梯度)为变半径。圆圈1的初始值为圆圈0半径的1% 我想在目标框(0-100)中输入一个圆1的新半径值。我以100毫秒为间隔,在圆圈1的半径上做了1%的步长,以显示它在增长,但它似乎不起作用。 我不太擅长javascript/jquery,但非常感谢您的帮助 请参见此处的演示: 以下是我的javascript: $(document).ready(function() { function circle_set(delta)
$(document).ready(function() {
function circle_set(delta) {
if (!delta) {
return false;
} else {
var e = document.querySelectorAll('circle[id^=circle]');
var radius0 = parseInt(e[0].getAttribute('r'), 10);
var radius1 = parseInt(e[1].getAttribute('r'), 10);
var currentRadius = (delta / 100) * 50;
if (currentRadius <= radius0) {
setTimeout(function() {
if (radius1 <= currentRadius) {
radius1++;
e[1].setAttribute('r', String(radius0) + "%");
},
}, 100);
}
}
}
var inputTargetButton = document.getElementById('executeTarget');
var inputTargetValue = document.getElementById('setTarget');
if (inputTargetButton.type == 'button') {
inputTargetButton.onclick = function() {
circle_set(inputTargetValue.value)
}
}
});
$(文档).ready(函数(){
函数圆集合(三角形){
if(!delta){
返回false;
}否则{
var e=document.querySelectorAll('circle[id^=circle]);
var radius0=parseInt(e[0].getAttribute('r'),10);
var radius1=parseInt(e[1].getAttribute('r'),10);
var currentRadius=(增量/100)*50;
如果(currentRadius您必须为函数使用setInterval,那么您的条件也不正确。请执行此操作
setInterval(函数(){
如果(radius1首先,您需要增加较大半圆的半径,radius0
。您希望增加radius1
,并将其应用于circle1
第二件事是setTimeout()
只调用函数一次。您需要使用setInterval()
每隔100ms调用一次函数。但是,由于您不希望在半径达到currentRadius
后继续调用,因此您应该在此时使用clearInterval()
清除该函数:
if(currentRadius根据我测试的内容,在此代码中:
if (radius0 <= currentRadius) {
radius0++;
e[1].setAttribute('r', String(radius0) + "%");
},
}
if(radius0您在之前缺少一个}
,100);
在您的超时中也如果(radius0@nisar currentRadius是用户在Targetbox中输入的内容。radius0始终小于currentRadius,因为它是初始半径。没有失败条件。如果不满足条件,该代码就不会运行。@AminGharavi更正了。但仍然没有运行此答案也是正确的。我选择nisar只是因为它来了首先,谢谢。这个问题让我纠结了好几个小时。我以前用过setTimeout来每隔一段时间调用一个函数,但我认为在那个例子中,我有另一个定时函数来进行回调,所以我感到困惑。你知道他们说的,第一个比第二个好。
if (currentRadius <= radius0) {
var timer = setInterval(function() {
if (radius1 <= currentRadius) {
radius1++;
e[1].setAttribute('r', String(radius1) + "%");
}
else {
clearInterval(timer);
}
}, 100);
}
if (radius0 <= currentRadius) {
radius0++;
e[1].setAttribute('r', String(radius0) + "%");
},
}