我有一个C ++(。cpp)文件,其内容我想在我的网页上格式化。我把它存储在本地;称之为myFile.cpp
。我需要的过程是:
myFile.cpp
codeText
内容
codeText
个<
个字符替换为<
,并将所有&gt;替换为>l;
codeText
<pre class="prettyprint" id="blah">
的内部HTML(Google的代码预制将在其中应用)所以这是我可怕的尝试无法运作:
var codeText;
var codeFile = new XMLHttpRequest();
codeFile.open("GET", "myFile.cpp", false);
codeFile.onreadystatechange = function ()
{
if(codeFile.readyState === 4)
{
console.log(codeFile.status);
if(codeFile.status === 200 || codeFile.status == 0)
{
codeText = codeFile.responseText;
}
}
}
codeFile.send(null);
codeText = AB_Escape(codeText);
document.getElementById("blah").innerHTML = codeText;
其中
function AB_Escape(txt)
{
txt.replace("<","<");
txt.replace(">",">");
return txt;
}
这不起作用:我的控制台显示Uncaught TypeError: Cannot set property 'innerHTML' of null
希望这可以让您了解我正在尝试做什么。我怎么能正确地做到这一点?
答案 0 :(得分:0)
移动:
codeText = AB_Escape(codeText);
document.getElementById("blah").innerHTML = codeText;
到if-loop,检查status是否等于200:
if(codeFile.status === 200 || codeFile.status == 0)
{
codeText = codeFile.responseText;
codeText = AB_Escape(codeText);
document.getElementById("blah").innerHTML = codeText;
}
收到代码文件后,您必须处理codeText。调用send命令时,尚未收到该文件。
答案 1 :(得分:0)
您的脚本在到达元素之前执行,
在正确的地方和/或在合适的时间它工作正常http://www.freakstyle.it/cpp/
所以:把脚本放在底部或在Dom加载