这里是代码: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;);和代码中断没有显示。我正在寻找的是如何再次启动功能并再次提示该号码。
答案 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();