帮助我这个逻辑(新手)

时间:2013-10-29 11:25:31

标签: javascript

我需要使用Javascript生成一个半金字塔数字序列,其中包含输入的起始编号和html页面中的行数,并在html页面中显示结果。我已经完成了Java脚本和东西。我没有得到的是它的逻辑。

看看这个,你可能会知道我在说什么: enter image description here

这是我在Javascript中的功能,它将在按钮点击功能

上触发
doFunction(){
 var enteredNumber=document.getElementById("start");
 var lines=document.getElementById("lines");
 var result;
 for(i=0;i<=lines.value;i++) {
 for(j=enteredNumber.value;j<=i;j++) { document.write(j + "&nbsp;" + "&nbsp;"); } 
 document.write("<br />");
 }
}

帮我按顺序打印逻辑:

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

有一个条件。我将指定$start$lines

如果$start = 5$lines = 3输出应该如下:

5
5 6
5 6 7

我已经使用了for循环,但是如果我给自己的起始编号高于行数,则不起作用。

我实际上需要用Javascript完成它,我已经完成了必要的但是我对生成这样的系列的逻辑感到困惑(用户给定的值)我实际上使用了两个for循环来生成常规数字系列低于1 1 2 1 2 3等等。

2 个答案:

答案 0 :(得分:2)

使用单独的变量来存储行数,即您开始使用的数字。 算法应如下所示:

$lines = input
$start = input
for($i = 0;$i<$lines;$i++){
    $psudo_start=$start;
    for($j = 0;$j<$i;$j++){
        print $psudo_start;
        $psudo_start++;
    }
    print newline;
}

答案 1 :(得分:0)

首先,如果没有提供开始/行,则需要默认值,然后获取输入并检查是否应使用该默认值或默认值。请记住,您的输入是一个字符串,因此您需要使用parseInt()将其转换为数字。

// If no start value is provided default to a start of 1
var startVal = 1;
var enteredStart = document.getElementById("start").value.trim();
if (enteredStart.length > 0) {
    startVal = parseInt(enteredStart);
}

// if no lines value is provided default to a lines of 5
var linesVal = 5;
var enteredLines = document.getElementById("lines").value.trim();
if (enteredLines.length > 0) {
    linesVal = parseInt(enteredLines);
}

现在您有了开始和行,无论是用户设置还是默认值。构建输出字符串:

var output = "";
for (var i = 0; i < lines; i++) {
    for (var j = startVal; j <= startVal + i; j++) {
        output += j + "  ";
    }
    output += "</br>";
}

请注意,内部循环应该与j <= startVal + i一样长,以便在起始编号高于行数时不打印时解决问题。

而不是document.write(),最好在页面中设置div并更改该div中的文本以显示输出。

<div id="outputDiv"></div>
document.getElementById("outputDiv").innerHTML = output;