将cpp文件的内容导入我的网页

时间:2014-06-03 22:35:01

标签: javascript

我有一个C ++(。cpp)文件,其内容我想在我的网页上格式化。我把它存储在本地;称之为myFile.cpp。我需要的过程是:

  • 获取存储为JavaScript字符串myFile.cpp
  • codeText内容
  • 将所有codeText<个字符替换为&lt;,并将所有&gt;替换为&gtl;
  • 的字符
  • 制作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("<","&lt;");
    txt.replace(">","&gt;");
    return txt;
}

这不起作用:我的控制台显示Uncaught TypeError: Cannot set property 'innerHTML' of null

希望这可以让您了解我正在尝试做什么。我怎么能正确地做到这一点?

2 个答案:

答案 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加载