【问题标题】:I can't set C source code into html using innerHTML javascript我无法使用 innerHTML javascript 将 C 源代码设置为 html
【发布时间】:2013-09-26 03:43:00
【问题描述】:

我使用 XMLHttpRequest() 从服务器获取 C 源代码。

return HttpResponse(code, mimetype='text/x-c')

当我使用 alert(code) 检查它时,我得到了正确的源代码。

喜欢这个

enter code here
#include<stdio.h>
int main(){
    .....
}

然后我将其拆分为 javascript 中的每一行。

var arr = code.split('\n');
window.document.getElementById("id").innerHTML = arr;

结果是这样的。

#include
,int main(){
,    ....
,}

我找不到&lt;stdio.h&gt; 我不知道为什么....我不认为这是因为 '

有什么问题?

【问题讨论】:

    标签: javascript innerhtml


    【解决方案1】:

    这是“

    您正在设置 HTML。每个浏览器都会解析 '' 之间的内容。在您的情况下,它正在寻找它认为的 DOM 元素“stdio.h”。没有浏览器知道如何处理它,所以它会忽略它,而不是渲染它。

    请参阅Convert special characters to HTML in Javascript 以了解正确转义您收到的字符串的方法。

    【讨论】:

    • 但我可以在 for 循环或其他行中找到“
    • 我也写在
    • 你必须更好地解释你的 for 循环问题 - 你有什么让你认为它看起来不错?如果您像检查响应一样使用alert,那么alert 与设置元素的innerHTML 之间存在巨大差异——即,一个不被Web 客户端的渲染器处理,而另一个是。跨度>
    • @user2659088: &lt;pre&gt; 块仍然可以包含其他 HTML。例如,它必须处理&lt;b&gt;&lt;span&gt; 标签。因此&lt;stdio.h&gt; 将被解释为 HTML 标记。 Scott 为您提供了解决方案 - 将 &amp;lt; 转换为 &amp;lt;。查看他给你的链接。
    • @user2659088 '&lt;' 仍然存在,只是不可见。浏览器认为它正在以标签名称'stdio.h' 开始一个元素,它无法理解。请注意,'&lt;pre&gt;' 是一个格式化上下文——仅此而已。
    【解决方案2】:

    示例代码是这样的:

    #include<stdio.h>
    
    int main(){
        int i;
        for(i=0; i<10; i++){
            printf("aa");
        }
    }
    

    我把它分成几行,数组只不包含&lt;stdio.h&gt;

    唯一的问题是&lt;stdio.h&gt;。 for循环条件中的'

    稍后我会再次检查转换问题。

    【讨论】:

    • 啊,我终于明白你在说什么了。你是说 for 循环中的 10 元素的未闭合标签,并将“开始标签”及其后面的所有内容呈现为文本。如果您的代码中有一个 > 任何较低的位置,那将是另一回事,尽管解析器可能会从它生成的大量语法错误中捕捉到它的意图(因为不是 10 之后的所有内容都在属性语法中)作为文字也是如此。
    猜你喜欢
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 2013-08-16
    • 2012-07-01
    • 2021-05-23
    • 2017-04-26
    相关资源
    最近更新 更多