Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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 我想调用if-else语句中的一个函数,它也在while循环中,这可能吗?_Javascript_While Loop - Fatal编程技术网

Javascript 我想调用if-else语句中的一个函数,它也在while循环中,这可能吗?

Javascript 我想调用if-else语句中的一个函数,它也在while循环中,这可能吗?,javascript,while-loop,Javascript,While Loop,我想调用if-else语句中的一个函数,它也在while循环中,这可能吗?如果我做不到这一点,我怎么能无限重复一个包含2个函数的If-else语句呢。这是完整的文件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>

我想调用if-else语句中的一个函数,它也在while循环中,这可能吗?如果我做不到这一点,我怎么能无限重复一个包含2个函数的If-else语句呢。这是完整的文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
</head>
<form>
<input type="radio" name="dtae" onclick="chngXx()">
<input type="radio" name="dtae" onclick="chngX()">
<input type="radio" name="dtae" onclick="chngY()">
</form>
<body>
<script type="text/javascript">
function startTime() {
    var today = new Date();
    var h = today.getHours();
    var x = 0;
    if (h > 12) {
        h = h - 12;
    }
    var m = today.getMinutes();
    var s = today.getSeconds();
    document.getElementById('txt').innerHTML =
    h + ":" + m + ":" + s;
    var t = setTimeout(startTime, 500);
}  
function startTime1() {
    var today = new Date();
    var h = today.getHours();
    var m = today.getMinutes();
    var s = today.getSeconds();
    document.getElementById('txt').innerHTML =
    h + ":" + m + ":" + s;
    var t = setTimeout(startTime1, 500);
}    

var x = 10;
    function chngXx() {
    x = 0;
    }
    function chngX() {
    x = 100;
    }
    function chngY(y) {
    y = x;
    }
//-----------
//Here is my problem
while (true) { 
    if (y = 100) {
    startTime1();
    }
    else{
        startTime();
    }
}
//-----------    

</script>

<div id="txt"></div>
</body>
</html>

函数startTime(){
var today=新日期();
var h=today.getHours();
var x=0;
如果(h>12){
h=h-12;
}
var m=today.getMinutes();
var s=today.getSeconds();
document.getElementById('txt').innerHTML=
h+“:“+m+”:“+s;
var t=设置超时(开始时间,500);
}  
函数startTime1(){
var today=新日期();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
document.getElementById('txt').innerHTML=
h+“:“+m+”:“+s;
var t=设置超时(starttime1500);
}    
var x=10;
函数chngXx(){
x=0;
}
函数chngX(){
x=100;
}
功能技术(y){
y=x;
}
//-----------
//这是我的问题
虽然(正确){
如果(y=100){
startTime1();
}
否则{
开始时间();
}
}
//-----------    

听起来你真正想要的是一个
间隔。使用常量的while循环(如
true
)几乎会立即使浏览器崩溃

HTML:

(我不知道
y
是从哪里来的,所以我不得不编造一些东西)


为什么不在Javascript中使用定时事件,而不是使用while循环(并锁定主线程)?有了它,您可以独立地运行给定的指令集

window.setInterval(RunStartTime, 10);

function RunStartTime() {
    if (y < 100) {
        StartTime();
    } else {
        StartTime1();
    }
}
window.setInterval(RunStartTime,10);
函数RunStartTime(){
如果(y<100){
开始时间();
}否则{
StartTime1();
}
}

这里可以看到一个正在运行的示例:

您是否尝试了该代码?您是否会使浏览器崩溃?可能吗?对明智?没有上下文就不知道。绝对不明智。JS不能很好地处理无限循环。这闻起来像是一个引用错误,因为未声明
y
。如果声明了
y
,那么它(尽管我们不知道
startTime
startTime1
做什么)将完全按照您的要求执行(这会阻塞事件循环,可能会阻塞浏览器(如果在浏览器中运行)UI,直到浏览器提示用户终止运行缓慢的脚本)…如果我的回答有问题,请发表意见。我尝试使用你的代码,但它没有执行我的功能,但它可以与其他代码一起工作,我现在附加了整个文档,以便您在需要更多参考时查看。不要使用
while
循环,因为您的浏览器会在崩溃前持续0到1秒。而
(y=100)
不是比较,
(y==100)
是比较。让我知道这是否有效。@people Good know:)如果这解决了您的问题,请设置一个答案:)
var tag = document.getElementById('tag');

setInterval(() => {
    var y = Math.round(Math.random() * 10);

    if (y === 10) {
        tag.textContent = 'is 10';
    } else {
        tag.textContent = 'isn\'t 10';
    }
}, 100)
window.setInterval(RunStartTime, 10);

function RunStartTime() {
    if (y < 100) {
        StartTime();
    } else {
        StartTime1();
    }
}