2

这是我的情况,我有一个 pre 标签,我用要突出显示的内容填充,当我用页面加载的内容填充 pre 标签时,它可以工作,突出显示等等。但是,如果在页面加载后我更新了 pre 标记中的内容并尝试再次突出显示内容,则没有任何反应。我已经尝试了其他有关此主题的 stackoverflow 答案中的所有建议,但没有任何效果。我已经倾注了源代码,对其进行了调试(没有太大进展),但我很难做到这一点。

Javascript:

var src = "\/*\n\tsome source\n\ttesting SyntaxHighlighter\n*\/\n\nfunction arrr()\n{\n\tvar ru = \"apirate?\";\n\treturn \"sure\";\n}\n\nvar calculatron = function(_a, _b)\n{\n\treturn (_a + _b);\n}\n\/\/ ...";
var $ = function (_id) { return document.getElementById(_id); }
function add_content()
{
    // re-adding the pre tags when updating content fixes a known issue.
    $('code').innerHTML = "<pre>" + src + "</pre>";

    <!-- does not work when updating content -->
    SyntaxHighlighter.highlight();
}

HTML:

<pre id="code" class="brush: js;"></pre>

<input type="submit" value=" submit " onclick="add_content()" />

<!-- works for onload -->
<script type="text/javascript">
SyntaxHighlighter.all();
</script>

有任何想法吗?

4

1 回答 1

1

呃,我终于意识到我的问题是什么了。为什么总是这样;就在我出去寻求帮助之后,一个小时后我想通了?

无论如何,我在下一行中的“pre”元素修复是我的问题;

// re-adding the pre tags when updating content fixes a known issue.
$('code').innerHTML = "<pre>" + src + "</pre>";

它缺少一个关键组件。

更正:

// re-adding the pre tags when updating content fixes a known issue.
$('code').innerHTML = "<pre class=\"brush: js;\">" + src + "</pre>";
于 2013-04-25T17:29:57.080 回答