首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript print()方法无法工作

Javascript print()方法无法工作
EN

Stack Overflow用户
提问于 2015-08-17 22:02:44
回答 3查看 66关注 0票数 0

我有一个简单的程序,将学生对象存储在一个数组中,然后将学生信息打印到网页上。我的程序中有一个print方法,它接受一个参数并访问div元素,然后将元素内部html设置为传递给打印消息的参数。请考虑代码片段,看看document.write方法在哪里工作得很好,而不是print方法。

代码语言:javascript
复制
var student;
var message = "";


var students =
    [
      {
        name: "Alice",
        track: "IOS",
        achievements: "Bronze",
        points: 20400
      },
      
      {
        name: "Linda",
        track: "Front End Development",
        achievements: "Silver",
        points: 26000
      }
    ];

  function print( msg )
  {
    var output = document.getElementById("output");
    output.innerHTML = msg;
  
  }

  for( var i = 0; i < students.length; i++)
    {
      student = students[i];
      
      message = "<h2> Student : " + student.name + "</h2>";
      message += "<p> Track : " + student.track + "</p>";
      message += "<p> Achievements : " + student.achievements + "</p>";
      message += "<p> points : " + student.points + "</p>";
   // print(message);
      document.write(message);
      
    }
代码语言:javascript
复制
<div id="output">
  
  </div>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-17 22:07:43

它工作得很好,你只需要尊重当前在div中的文本。

我在innerHtml调用中添加了一个innerHtml以附加新文本

代码语言:javascript
复制
var student;
var message = "";


var students =
    [
      {
        name: "Alice",
        track: "IOS",
        achievements: "Bronze",
        points: 20400
      },
      
      {
        name: "Linda",
        track: "Front End Development",
        achievements: "Silver",
        points: 26000
      }
    ];

  function print( msg )
  {
    var output = document.getElementById("output");
    output.innerHTML += msg;
  
  }

  for( var i = 0; i < students.length; i++)
    {
      student = students[i];
      
      message = "<h2> Student : " + student.name + "</h2>";
      message += "<p> Track : " + student.track + "</p>";
      message += "<p> Achievements : " + student.achievements + "</p>";
      message += "<p> points : " + student.points + "</p>";
    print(message);
     // document.write(message);
      
    }
代码语言:javascript
复制
<div id="output">
  
  </div>

票数 1
EN

Stack Overflow用户

发布于 2015-08-17 22:07:45

这是因为您的print方法取代了整个output div。因此,循环的每一次迭代都会覆盖前面的输出。

你可以改变:

output.innerHTML = msg;

至:

output.innerHTML += msg;

而且它会正常工作。

票数 2
EN

Stack Overflow用户

发布于 2015-08-17 22:11:11

在这种情况下,您的print方法每次调用它时都会替换输出的innerHTML

因此,如果在循环中调用print,则唯一显示的结果将是循环中的最后一项。

如果向该方法添加+,您将得到所需的东西。不过,稍后您需要一个方法来清除div。

代码语言:javascript
复制
var student;
var message = "";


var students = [{
    name: "Alice",
    track: "IOS",
    achievements: "Bronze",
    points: 20400
  },

  {
    name: "Linda",
    track: "Front End Development",
    achievements: "Silver",
    points: 26000
  }
];

function print(msg) {
  var output = document.getElementById("output");
  output.innerHTML += msg;

}

for (var i = 0; i < students.length; i++) {
  student = students[i];

  message = "<h2> Student : " + student.name + "</h2>";
  message += "<p> Track : " + student.track + "</p>";
  message += "<p> Achievements : " + student.achievements + "</p>";
  message += "<p> points : " + student.points + "</p>";
  print(message);

}
代码语言:javascript
复制
<div id="output">

</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32060428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档