JavaScript的代码问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript的代码问题相关的知识,希望对你有一定的参考价值。

在着段代码里
var i,line;
for(line=1;line<=5;line++)

document.write(" ");
for(i=1;i<=5-line;i++) document.write(" ");
for(i=1;i<=line;i++)

document.write("*");
if (i>0) document.write(" ");//这段代码的if的作用是?应该是没必要加的对吧?

document.write("<br>");

而且,前几句代码的空格是不被显示的。
而我注释的那段代码的空格却是被显示的 这是为什么?

html中由于格式的布局等问题,定义有一个特殊的东西--空白字符,空白字符包括有tab,space,enter等.这么字符在显示时只显示一个空格字符.也就是说如果是字符时,不管你打多少个空白字符都显示一个空格字符.当然,如果是回车开的的话,不会换行或者是显示字符的.除非使用<pre>标签进行原样显示.

很显然,前边不管多少个空格都只显示为一个空格的,而不是没有显示.后边的也一样,所以你可以看到每个*号后边都有一个空格的原因!

但事实上有时我们需要多个空白字符,这时就需要转义.如果我们要显示多个空格时可以在HTML中输入 表示一个空格,输入多少个就会显示多少个.另一个转义是直接使用字符编码, 表示的也是空格.这个一个通用的解决方案,原理上可以显示任何字符的,也包汉字与其他U码.当然如果不方面也可以使用�x20;用十六进制显示,这都是无所谓的!

这与JS中的空白字符也是有区别的!JS使用"\n"表示一个回车,"\f"表示一个换行.这个JS生成的代码同样是还原给了浏览器,也就是说如果在JS中写document.write("\n")时,只是源码换行,而非是HTML解析换行,所看到的页面并没有换行!当然这里想输出的空格,应该使用的是 进行输出的.

不是你注释的没有显示,而是都显示的,但由于浏览器的解释,前边无论多少都只能看到一个空格,所以你认为他们是没有显示的!

if(i>0)本身就是多余的,没有必要加上,但是由于这个程序是想打印金字塔*的程序,所以document.write(" ")还是有必要的,否则除非是1,3,5这样的奇数能叠成金字塔,偶数时无法叠成的,只有加上空格,下一行的*星显在上一行前一个字符和后一个字符才能叠成!
参考技术A 在*后输出个空格
if (i>0) 多余 for里的i都是>0的
参考技术B 你没说清楚你的问题啊
加在网页里要显示的空格不是那样直接打出来的,是HTML语言里的空格代码。
参考技术C 呼呼 又见打星星!!!
这个if没必要写 在它的外面for定义i的时候是从1开始的 ,++后就不可能小于等于零了.
另外要想输出空格的话 " "这样是不能输出的,应该使用" "这就是HTML语言

我的javascript代码有什么问题[重复]

这个问题在这里已有答案:

我不知道为什么它不会工作。它不计算计算总数。它返回数组的总数而不是数组中的总数。

function calculate() {
  var num = prompt("How many number : ");
  var number = [];
  var i = 0,
    count, count1, total, total1;

  while (i < num) {
    number.push(prompt("Enter a number :"));

    if (number[i] > 5) {
      count = count + 1;
      total = total + number[i];
    } else if (number[i] <= 5) {
      count1 = count1 + 1;
      total1 = total1 + number[i];
    }
    i++;

  }

  document.write("For count >5 ", count);
  document.write("For total >5 ", total);
  document.write("For count <=5 ", count1);
  document.write("For total >5 ", total1);
}
<html>

<body>
  <p>Click the button to demonstrate the prompt box.</p>
  <button onclick="calculate()">Try it</button>
</body>

</html>

我不知道我做错了什么..我需要帮助。

答案

尝试此解决方案:

function calculate() {
  var num = prompt("How many number : ");
  var number = [];
  var i = 0,
    count=0, count1=0, total=0, total1=0;

  while (i < num) {
    number.push(prompt("Enter a number :"));

    if (parseInt(number[i]) > 5) {
      count++;
      total = total + parseInt(number[i]);
    } else if (parseInt(number[i]) <= 5) {
      count1++;
      total1 = total1 + parseInt(number[i]);
    }
    i++;

  }

  document.write("For count >5 is ", count,"</br>");
  document.write("For total >5 is  ", total,"</br>");
  document.write("For count <=5 is " , count1,"</br>");
  document.write("For total >5 is ", total1,"</br>");
}
<html>

<body>
  <p>Click the button to demonstrate the prompt box.</p>
  <button onclick="calculate()">Try it</button>
</body>

</html>

以上是关于JavaScript的代码问题的主要内容,如果未能解决你的问题,请参考以下文章

赋值运算符、映射和承诺。该代码有啥问题? Javascript

javascript 确保在一段代码执行后再执行下面的代码???

如何克服 JavaScript 代码中缺少 Perl 的 \G 的问题?

最流行的JavaScript代码规范

我的 javascript 代码的问题在哪里? [关闭]

如何编写 javascript 跟踪代码?