我是JavaScript的新手。我想在Javascript中做一个乘子,用prompt()得到数字n,这是我们的乘法器,我想用n数乘以从1到n的所有数。示例:
如果是n=4

然后,为了获得奖金,消除所有相同的产品,因此我们认为2_3 = 3_2,它应该如下所示:

所以,到目前为止,我的代码:
// JavaScript Document
function TableOn() { document.write('<table border="1">'); }
function TableOff() { document.write('</table>') }
function TrOn() { document.write('<tr>'); }
function TrOff() { document.write('</tr>'); }
function TdOn() { document.write('<td>'); }
function TdOff() { document.write('</td>'); }
function Izvrsi() {
var n;
n = prompt('Insert the multiplayer (n)');
script0 = TableOn();
for (var i = 0; i <= n; i++) {
script1 = TrOn();
/*for(var j=0;j<=n;j++)
{
script2 = TdOn();
document.write(j * n + ' ');
script6 = TdOff();
}*/
script2 = TdOn();
document.write(i + ' ');
script3 = TdOff();
script4 = TrOff();
}
for (var j = 0; j <= n; j++) {
script11 = TrOn();
script2 = TdOn();
document.write(j * n + ' ');
script6 = TdOff();
script12 = TrOff();
}
script5 = TableOff();
}我可能做错了什么,你能帮我吗?
发布于 2014-02-10 19:00:40
首先,您可以调用函数而不将结果分配给任何东西。由于您没有通过script0通过script12进行任何操作,所以最好完全将它们排除在外。我们来修一下压痕。
function Izvrsi()
{
var n;
n=prompt('Insert the multiplayer (n)');
TableOn();
for(var i=0;i<=n;i++)
{
TrOn();
/*for(var j=0;j<=n;j++)
{
TdOn();
document.write(j * n + ' ');
TdOff();
}*/
TdOn();
document.write(i + ' ');
TdOff();
TrOff();
}
for(var j=0;j<=n;j++)
{
TrOn();
TdOn();
document.write(j * n + ' ');
TdOff();
TrOff();
}
TableOff();
}

运行此操作,表仅为一列宽。这是有意义的,因为您只在每个tr中编写一个tr。如果你取消了中间部分的注释,你就会得到你想要的方形。
function Izvrsi()
{
var n;
n=prompt('Insert the multiplayer (n)');
TableOn();
for(var i=0;i<=n;i++)
{
TrOn();
for(var j=0;j<=n;j++)
{
TdOn();
document.write(j * n + ' ');
TdOff();
}
TdOn();
document.write(i + ' ');
TdOff();
TrOff();
}
for(var j=0;j<=n;j++)
{
TrOn();
TdOn();
document.write(j * n + ' ');
TdOff();
TrOff();
}
TableOff();
}

数字看起来不对,因为您正在编写j * n,即当前列的索引,乘以最大乘数。相反,编写j * i,即当前列乘以当前行。当我们完成时,让我们删除第二个for块,因为它只是在末尾添加了一列垃圾。
function Izvrsi()
{
var n;
n=prompt('Insert the multiplayer (n)');
TableOn();
for(var i=0;i<=n;i++)
{
TrOn();
for(var j=0;j<=n;j++)
{
TdOn();
document.write(j * i + ' ');
TdOff();
}
TdOn();
document.write(i + ' ');
TdOff();
TrOff();
}
TableOff();
}

这看起来很好,除非表从0开始,而不是从1开始,行号出现在右边而不是左边。将document.write(i + ' ');移到for循环的前面,并将初始i和j值更改为1。
function Izvrsi()
{
var n;
n=prompt('Insert the multiplayer (n)');
TableOn();
for(var i=1;i<=n;i++)
{
TrOn();
TdOn();
document.write(i + ' ');
TdOff();
for(var j=1;j<=n;j++)
{
TdOn();
document.write(j * i + ' ');
TdOff();
}
TrOff();
}
TableOff();
}

您需要一个单独的循环来创建列号。非常简单--只需写出一个空的空格和从1到n的数字。
function Izvrsi()
{
var n;
n=prompt('Insert the multiplayer (n)');
TableOn();
//create column numbers
TrOn();
TdOn(); document.write(' '); TdOff();
for(var i=1;i<=n;i++){
TdOn(); document.write(i + ' '); TdOff();
}
TrOff();
for(var i=1;i<=n;i++)
{
TrOn();
TdOn();
document.write(i + ' ');
TdOff();
for(var j=1;j<=n;j++)
{
TdOn();
document.write(j * i + ' ');
TdOff();
}
TrOff();
}
TableOff();
}

最后,您可以通过在for(var j...循环中执行检查来消除重复的产品。如果我比j小,那就不用写任何东西了。
function Izvrsi()
{
var n;
n=prompt('Insert the multiplayer (n)');
TableOn();
//create column numbers
TrOn();
TdOn(); document.write(' '); TdOff();
for(var i=1;i<=n;i++){
TdOn(); document.write(i + ' '); TdOff();
}
TrOff();
for(var i=1;i<=n;i++)
{
TrOn();
TdOn();
document.write(i + ' ');
TdOff();
for(var j=1;j<=n;j++)
{
TdOn();
if (i < j){
document.write(' ');
}
else{
document.write(j * i + ' ');
}
TdOff();
}
TrOff();
}
TableOff();
}

https://stackoverflow.com/questions/21684935
复制相似问题