Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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 DOM setInterval将在document.ready上加载,但不会在函数调用上加载_Javascript_Jquery_Html_Dom_Setinterval - Fatal编程技术网

Javascript DOM setInterval将在document.ready上加载,但不会在函数调用上加载

Javascript DOM setInterval将在document.ready上加载,但不会在函数调用上加载,javascript,jquery,html,dom,setinterval,Javascript,Jquery,Html,Dom,Setinterval,这是我的第一个问题,请耐心等待 我正在为我的课程做练习。我必须调用实例化setInterval对象的调度程序。如果我从jQuery实例化,所有的运行都很好,但是如果我从函数调用,那么间隔就不会开始。我不明白这种不同行为背后的原因。你知道为什么吗 我有一个node.js/express服务器在“服务器端”运行,但它与此上下文无关 这是我的html: <html> <head> <script src="http://ajax.googleapis.com/aj

这是我的第一个问题,请耐心等待

我正在为我的课程做练习。我必须调用实例化setInterval对象的调度程序。如果我从jQuery实例化,所有的运行都很好,但是如果我从函数调用,那么间隔就不会开始。我不明白这种不同行为背后的原因。你知道为什么吗

我有一个node.js/express服务器在“服务器端”运行,但它与此上下文无关

这是我的html:

    <html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">

    var  ResetableScheduler = function(callback, miliseconds, data){
        var handler;
        this.start = function (){
            handler = setInterval(function(){callback(data + "\t(" + miliseconds + ")")}, miliseconds);
        }

        this.reset = function(newdata){
            clearInterval(handler);
            handler = setInterval(function(){callback(newdata + "\t(" + miliseconds + ")")}, miliseconds);
        }

        this.stop = function(){
            clearInterval(handler);
        }
    }

            // runs fine
    //$(function(){
    //  var rs = new ResetableScheduler(doTranslate_pt_en_2, 200, "Hello");      
        //rs.start(); 
        //setTimeout(function() { rs.reset("JavaScript"); }, 2500); 
        //setTimeout(function() { rs.stop(); }, 6000); 
    //});

    function doTranslate_pt_en_2(text){
        console.log("text = " + text);
    }

            // prints begin and then nothing...
    function begin(text)
    {
        console.log("begin");
        var rs = new ResetableScheduler(doTranslate_pt_en_2, 200, "Hello");      
        rs.start();
    }

</script>
</head>
<body>
    <div>
        <form method="post" action="/api/translate/pt/en">
            <input type="textbox" id="originaltext" name="originaltext">
            <input type="submit" id="translate-btn" onclick="begin(originaltext)" label="traduzir">
        </form>

        <input type="textbox" id="translatedtext" placeholder="<%= result %>">
    </div>  
    </body>
    </html>

var ResetableScheduler=函数(回调、毫秒、数据){
var处理器;
this.start=函数(){
handler=setInterval(函数(){callback(data+“\t(“+milisonds+”))},毫秒);
}
this.reset=函数(newdata){
clearInterval(处理器);
handler=setInterval(函数(){callback(newdata+“\t(“+milisonds+”))},毫秒);
}
this.stop=函数(){
clearInterval(处理器);
}
}
//运行良好
//$(函数(){
//var rs=新的可重置调度程序(doTranslate_pt_en_2200,“您好”);
//rs.start();
//setTimeout(function(){rs.reset(“JavaScript”);},2500);
//setTimeout(函数(){rs.stop();},6000);
//});
函数doTranslate_pt_en_2(文本){
console.log(“text=“+text”);
}
//打印开始,然后什么都没有。。。
函数开始(文本)
{
console.log(“开始”);
var rs=新的可重置调度程序(doTranslate_pt_en_2200,“您好”);
rs.start();
}

将实例化代码附加到表单的
提交
事件:

$('form').on('submit', function(e) {
    //e.preventDefault();
    var rs = new ResetableScheduler(doTranslate_pt_en_2, 200, "Hello");      
        rs.start();
});

在这种情况下,您可以在单击提交按钮时删除附加在提交按钮上的
onclick
代码。

当用户单击“提交”按钮时,提交
,并使用服务器的响应重新加载页面。重新加载页面会重置所有内容。因此,这种行为是因为表单提交,如果我只是有一个没有表单的按钮,那么函数将执行预期的操作,对吗?是的,您还必须修复“onclick”处理程序。如果要传递字符串,必须将其引用为:
onclick=“begin('message')”
谢谢,我尝试了你的代码,我明白你的意思,但它不起作用,行为是一样的