Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么赢了';这个半圆不长吗?_Javascript_Jquery_Css - Fatal编程技术网

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)

基本上, 我有两个半圆。其中一个(圆0)为等半径,内半圆(圆1,带梯度)为变半径。圆圈1的初始值为圆圈0半径的1%

我想在目标框(0-100)中输入一个圆1的新半径值。我以100毫秒为间隔,在圆圈1的半径上做了1%的步长,以显示它在增长,但它似乎不起作用。 我不太擅长javascript/jquery,但非常感谢您的帮助

请参见此处的演示:

以下是我的javascript:

$(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) + "%");
  }, 
}