如果javascript中的条件为false,如何再次启动该函数

时间:2015-06-06 09:02:52

标签: javascript function line goto

这里是代码:this显示用户给出的任何数字表。

function table(num){

    var num = prompt("please enter any number");
    var x = num;

    if (num <= 0){
        alert("invalid number or Zero") ;
    } else {
        for(var i=1; i <= 10; i++){
            var y = x * i;

            document.write(x + ' X ' + i +' = ' + y + '<br/>')  ;
        }
    }
}

table();

现在如果-1输入则显示警告(&#34;无效数字或零&#34;);和代码中断没有显示。我正在寻找的是如何再次启动功能并再次提示该号码。

4 个答案:

答案 0 :(得分:4)

递归是您的朋友:再次调用该方法

ComboBox

除此之外,您可能需要考虑轻微的重构,因为有一些无用的变量/参数

答案 1 :(得分:1)

如前所述,您需要在table之后再次调用alert()函数(递归)。

你可以清理一下这个函数,因为不需要将num复制到x,并且函数中的num参数不是这是必要的,因为你在函数本身中初始化num,你不需要将它作为参数传递:

function table(){
    var num = prompt("please enter any number");

    if (num <= 0){
        alert("invalid number or Zero") ;
        table();
    } else {
        for(var i = 1; i <= 10; i++){
            var y = num * i;
            document.write(num + ' X ' + i +' = ' + y + '<br/>');
        }
    }
}

table();

答案 2 :(得分:0)

为什么参数(num)?

您的功能以两种方式重写,重复使用:

document.querySelector('#table').addEventListener('click', start);
document.querySelector('#table2').addEventListener('click', start);


function start() {
  return window[this.id]();
}

function table(){
    var num = prompt("please enter any number");
    if (num <= 0){
        log(num + ": invalid number or zero");
        return table();
    } 
    for(var i = 1; i <= 10; i += 1){
      log(i + ' * ' + num + ' = ' + (i * num));
    }
}

// just for fun: more functional
function table2(){
    var num = prompt("please enter any number");
    var reslt = num <= 0 ? [num + ": invalid number or zero\n"] :
                [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(
                  function(v, i) {
                    return v + ' * ' + num + ' = ' + (v * num);
                  }
                );  
    log(reslt.join('\n'));
    return reslt.length < 10 ? table2() : true;
}

function log(str) {
  log.el = log.el || document.querySelector("#result");
  log.el.textContent += str+'\n';
}
<button id="table">exec table</button>
<button id="table2">exec table2</button>
<pre id="result"></pre>

答案 3 :(得分:0)

您也可以使用while循环。

有一个小提琴:https://jsfiddle.net/hmea6rLx/

JS代码:

function table(num){
    var num=0;
    while (num <= 0){
            num = prompt("please enter any number");
            var x = num;
        $('#error').html("invalid number or Zero") ;
    }
    for(var i=1; i <= 10; i++){
        var y = x * i;

        $('#error').html(x + ' X ' + i +' = ' + y + '<br/>')  ;
    }
}

table();