[英]Show console.log() in an HTML element in JavaScript
我编写了一个函数,它将所有内容写入控制台(使用console.log(string);
)。
现在我想在<p>
或<div>
“模拟”或显示生成的控制台日志。
有谁知道如何做到这一点?
根据您问题中的线索,我认为您在浏览器环境中工作。
console
是window
对象上的一个对象。 因此,您可以轻松更换它。 以下代码将使用具有方法log
的自定义window.console
替换浏览器的window.console
。 log
方法将接受一个字符串并将其附加到 id 为myLog
的元素中
在您的 HTML 中:
<p id="myLog"></p>
在你的 JS 中:
window.console = {
log: function(str){
var node = document.createElement("div");
node.appendChild(document.createTextNode(str));
document.getElementById("myLog").appendChild(node);
}
}
console.log('hi');
console.log('there');
这是因为您只记录strings 。 如果你记录其他东西,比如对象,你可能想在log
方法中添加一个类型检查,如果它是一个对象,在将它添加到节点之前通过JSON.stringify
运行它。
HTLM:
<body>
<ul id ="list"></ul>
</body>
爪哇脚本:
function createMessage(str) {
var newMessage = document.createElement('li').innerHTML = str;
var list = document.getElementById("list");
list.insertBefore(newNode, list.childNodes[0]);
}
我会使用这样的东西:
HTML:
<!DOCTYPE html>
<html>
<body>
<div id="yourContainer"></div>
</body>
</html>
JS:
function logToContainer (message) {
var container = document.getElementById('yourContainer')
var messageElement = document.createElement('p')
messageElement.innerHtml = message
container.appendChild(messageElement)
}
这将获取 ID 为yourContainer
的元素,创建一个段落元素,然后将该段落附加到容器中。
如果您希望它看起来更像控制台输出,您也可以使用pre
块而不是p
:)
如果您想创建一个单行控制台,其中下一条日志消息覆盖前一条消息,并且每个消息显示特定的秒数,您可以使用这样的东西(这就是我使用的):
console.log = (message) => { // wait until the console is clear to show next message function setMessage (_message) { if ($('#console').text()) { // if console is not empty, check again in 0.5s window.setTimeout(() => { setMessage(_message) }, 500) } else { $('#console').text(_message) window.setTimeout(() => { $('#console').text('') }, 3000) // shows the message for 3 seconds } } setMessage(message) } $('#button').click(()=>{ console.log(Math.random().toString()) })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="button">Generate random number on console</button> <div id="console"></div>
var str = 'some text that you send to the console...'; document.getElementById("thediv").innerHTML = str;
<div id="thediv"></div>
如果您只想写入页面,则可以使用 document.write(string)。
或者,您可以使用段落标签并使用 document.getElementById(id).innerHTML = string。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.