Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在innerHTML中添加新行_Javascript_Newline_Innerhtml - Fatal编程技术网

Javascript 在innerHTML中添加新行

Javascript 在innerHTML中添加新行,javascript,newline,innerhtml,Javascript,Newline,Innerhtml,你们能告诉我为什么我不能在“p”标签上写新行吗 我希望输出像这样 var数=10; 警报号码 我也尝试了br tag和\n tag,但都不起作用 我不知道这里出了什么问题 <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>onclick</title> <script type="text/javascr

你们能告诉我为什么我不能在“p”标签上写新行吗

我希望输出像这样

var数=10; 警报号码

我也尝试了br tag和\n tag,但都不起作用

我不知道这里出了什么问题

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>onclick</title>

    <script type="text/javascript">
        function myNum() {

            var willEval = " ";
            //willEval += 'var number = 10; <br/>';
            //I put <br/> before, but error happened saying
            //Uncaught SyntaxError: Unexpected token '<'

            willEval += 'var number = 10;';
            willEval += '\n'; 
            //or willEval += '<br />;

            willEval += '\n alert(number);';

            eval(willEval);
            alert(willEval);

            document.getElementById('demo').innerHTML = willEval + "<br />";

        }

    </script>
</head>


<body>
    <h1>onclick</h1>

    <button onclick="myNum()">
        CLICK ME!
    </button>
    <p id="demo"></p>
</body>
</html>
警报不呈现HTML,通常认为警报只呈现ASCII字符串,因此使用定义的换行符\n\r\n也可以工作

因此,也可以使用\t格式化复杂的警报对话框。 警报将直接传递到浏览器,因此某些浏览器将支持unicode或扩展ASCII字符集。这样想,警报框实际上是来自浏览器代码的弹出对话框,而不是来自您的页面。因此,内容m、ust必须符合编写浏览器代码时使用的字符串编码

另一方面,评估:

eval函数计算表示为字符串的JavaScript代码

此函数尝试编译和计算字符串值,就像它是javascript代码一样

不是javascript代码,这就是为什么不能求值包含在其中的字符串

是将换行符插入HTML文本段落的正确机制

ASCII/n对HTML呈现没有任何影响,因为它被分类为控制字符,而该字符本身没有视觉表示。我们通常将这些字符称为空白字符。 HTML呈现在呈现时忽略空白,这允许我们始终在HTML代码中添加换行符,以便更容易阅读代码,而不会不必要地增加页面呈现

字符串的警报和html呈现之间的这个问题很重要,要知道您是否要构建一个字符串并在两个位置都使用它

因此,如果您希望动态构造javascript代码,并且该代码包含一个警报框,并且您希望该警报框中有一个换行符,则只需使用\n即可。如果您希望在html中显示构造的代码字符串并在html输出中保留换行符,则可以使用替换将所有字符转换为\n:

onclick 函数myNum{ var结果=0; var willEval=; willEval+='变量编号=10;'; willEval+='\n'; willEval+='\n alertnumber;'; //注意:添加了return语句,因此我们可以使用eval的结果 willEval+='\n返回编号;'; var result=eval'函数{'+willEval+'}'; willEval+='\n='+结果; 威利瓦尔; document.getElementById'demo'.innerHTML=willEval.replace/\n/g,; } onclick 点击我!


在正常的HTML上下文中,换行符只在pre元素中的特定条件下显示,或者应用特殊的CSS格式。这里您的错误是,您在全文内容之前添加了br,而不是将其插入到两部分之间,您当前只在这两部分之间放置了一个\n。那么我应该使用pre元素将整个内容放在其中吗?…还是插入一个而不是一个\n-具体取决于您需要什么,如果您需要将其显示为警告和页面内部,那么如果您使用HTML部分,您需要以不同的方式处理这两个问题。您应该进一步解释代码,很高兴看到您的想法和尝试,但不清楚的是您希望实现的总体结果。下次将其分解为警报框显示的内容与您期望的内容,然后对html执行相同的操作。我无法为您进行此编辑,因为我要做的假设太多。谢谢您的帮助!我会参考你提供的那些网站:是的,下次我应该在提问时把我的问题和代码弄清楚。。再次感谢!