我需要使用Javascript生成一个半金字塔数字序列,其中包含输入的起始编号和html页面中的行数,并在html页面中显示结果。我已经完成了Java脚本和东西。我没有得到的是它的逻辑。
看看这个,你可能会知道我在说什么:
这是我在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 + " " + " "); }
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
等等。
答案 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;