Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 Onclick函数参数_Javascript_Function_Onclick_Arguments_Counter - Fatal编程技术网

Javascript Onclick函数参数

Javascript Onclick函数参数,javascript,function,onclick,arguments,counter,Javascript,Function,Onclick,Arguments,Counter,我试图模拟一个从0到100的数字,我遇到了一些问题。 首先,我尝试使用for循环并将迭代值发送到.innerHTML div,但它只显示最后一个数字。所以我在网上搜索了一个动画javascript计数器,发现了这个: 它适合我的需要,但我不知道如何应用它,以便它可以触发一个按钮。该脚本在定义函数时使用参数输入编写,然后在结束时通过在后面运行函数来传递它们。 我不知道如何为onclick事件输入参数? 这是我的尝试,但我不断出错,特别是在onclick行 var loadSim_btn = doc

我试图模拟一个从0到100的数字,我遇到了一些问题。 首先,我尝试使用for循环并将迭代值发送到
.innerHTML div
,但它只显示最后一个数字。所以我在网上搜索了一个动画javascript计数器,发现了这个:

它适合我的需要,但我不知道如何应用它,以便它可以触发一个按钮。该脚本在定义函数时使用参数输入编写,然后在结束时通过在后面运行函数来传递它们。 我不知道如何为
onclick
事件输入参数? 这是我的尝试,但我不断出错,特别是在
onclick

var loadSim_btn = document.getElementsByTagName('button')[0];

loadSim_btn.onclick=function load_Sim(pCent, 25, 100, 2000);

function load_Sim (pCent, start, end, duration) {
  var range = end - start;
        // no timer shorter than 50ms (not really visible any way)
        var minTimer = 50;
        // calc step time to show all interediate values
        var stepTime = Math.abs(Math.floor(duration / range));
        // never go below minTimer
        stepTime = Math.max(stepTime, minTimer);
        // get current time and calculate desired end time
        var startTime = new Date().getTime();
        var endTime = startTime + duration;
        var timer;

        function run() {
            var now = new Date().getTime();
            var remaining = Math.max((endTime - now) / duration, 0);
            var value = Math.round(end - (remaining * range));
            obj.innerHTML = value;
            if (value == end) {
                clearInterval(timer);
            }
        }

        timer = setInterval(run, stepTime);
        run();
    }
回答: 因此,从我可以看出的一个问题是,我忘记了obj定义行。此外,约书亚·戴维森回答了我的主要问题。 onclick回调不提供参数,因此我们将函数调用包装在匿名函数中(不带参数) 因此,我在java脚本中分配按钮的选项是:

loadSim_btn.onclick=function(){loadSim(pCent,251002000);}

并使用事件侦听器:

loadSim_btn.addEventListener(“单击”,函数(){load_Sim(pCent, ),"","是,对",


添加一个按钮并附加与onclick处理程序相同的函数。如
单击
。请检查此工作。

您必须定义
obj

写一些类似于:
var obj=document.getElementById(pCent)

在加载Sim的顶部,onclick回调不提供参数,因此我们将函数调用包装在匿名函数中(不带参数)

我还可以建议您使用事件侦听器而不是onclick吗

loadSim_btn.addEventListener("click", function() { load_Sim(pCent, 25, 100, 2000); }, true);
最后,与其使用
getElementsByTagName(…)[0]
,不如在可能的情况下使用
getElementById(“btnId”)
(只有一个元素应该具有该ID)-并将
ID=“btnId”
添加到HTML中的按钮

我希望这一切顺利(通过我的手机发帖)。

如赫克托·巴博萨所示;这可以通过向html按钮元素添加animateValue('value',01002000)来实现。这里的工作示例

HTML:

<div id="value">0</div>
<button type = "button" onclick = "animateValue('value', 0, 100, 20000)">Click</button>
#value {
    font-size: 100px;
}
function animateValue(id, start, end, duration) {

    var obj = document.getElementById(id);
    var range = end - start;
    var minTimer = 50;
    var stepTime = Math.abs(Math.floor(duration / range));

    stepTime = Math.max(stepTime, minTimer);

    var startTime = new Date().getTime();
    var endTime = startTime + duration;
    var timer;

    function run() {
        var now = new Date().getTime();
        var remaining = Math.max((endTime - now) / duration, 0);
        var value = Math.round(end - (remaining * range));
        obj.innerHTML = value;
        if (value == end) {
            clearInterval(timer);
        }
    }

    timer = setInterval(run, stepTime);
    run();
}
Javascript:

<div id="value">0</div>
<button type = "button" onclick = "animateValue('value', 0, 100, 20000)">Click</button>
#value {
    font-size: 100px;
}
function animateValue(id, start, end, duration) {

    var obj = document.getElementById(id);
    var range = end - start;
    var minTimer = 50;
    var stepTime = Math.abs(Math.floor(duration / range));

    stepTime = Math.max(stepTime, minTimer);

    var startTime = new Date().getTime();
    var endTime = startTime + duration;
    var timer;

    function run() {
        var now = new Date().getTime();
        var remaining = Math.max((endTime - now) / duration, 0);
        var value = Math.round(end - (remaining * range));
        obj.innerHTML = value;
        if (value == end) {
            clearInterval(timer);
        }
    }

    timer = setInterval(run, stepTime);
    run();
}

请指定您有哪些错误。您是否希望传递参数或硬编码参数?错误是:js_code.js:19未捕获语法错误:意外数字第19行是button=onclick Line,如果“pCent”是输出元素的id,则必须将其作为字符串写入第2行:
loadSim_btn.onclick=function load_Sim(“pCent”, 25, 100, 2000);谢谢你的工作。我一直试图用java脚本来完成这一切。在您的方法中,您直接将函数分配给html div的内联按钮。出于好奇,这是否可以从javascript中实现?当然,您可以通过添加一些代码,如document.getElementById(“animateBtn”).addEventListener(“click”,function(){…});使用.addEventListener代替onclick有什么意义吗?很抱歉(非常!)延迟了回复。onClick替换任何现有的侦听器,而addEventListener add是一个侦听器。我曾经遇到过这样的问题:脚本执行了额外的功能(单击噪音、动画等),并且总是使用onclick=。。。成为一种坏习惯。