css没有应用于document.write文本

时间:2011-01-25 03:28:36

标签: javascript css document.write

我正在使用document.write为Chrome扩展程序向页面编写文本,但未应用关联的自定义CSS:

<!DOCTYPE html>
<html>
<head>
    <title>TITLE GOES HERE</title>
     <link rel="stylesheet" href="css/popup.css" type="text/css" />
</head>

<body>
     <script type="text/javascript">
        ...
        function showFolder(folder) {
            console.debug('FOLDER: '+folder.title);
            document.write('<p>'+folder.title+'<br></p>');
        }
    </script>

</body>
</html>

CSS很简单,仅用于调试:

p {
color: red;
}

如果我将样式表链接放在函数showFolder中,我可以使它工作,但这不是正确的方法。我正在学习jscript / CSS,所以答案可能是补救措施。是jscript,CSS还是两者都有问题?

3 个答案:

答案 0 :(得分:3)

使用innerHTML。

<div id="towrite"></div>

然后你可以这样写:

div=document.getElementById('towrite');
div.innerHTML = '<p>'+folder.title+'<br></p>';

答案 1 :(得分:1)

如果您在页面加载完成之前运行document.write()(可能直接从页面上的脚本调用showFolder调用),那么文本将按照您的预期写入文档。

但是,如果在页面加载后调用document.write,就像在事件处理程序中一样,您将编写一个全新的页面。这通常不是你想要的。

相反,请遵循Zoltan的建议并设置空div的innerHTML属性。

答案 2 :(得分:0)

我不是javascript专家...我主要使用jQuery ..但试试这个,有点道理:

<!DOCTYPE html>

    TITLE去这里

<script type="text/javascript">
    ...
    function showFolder(folder) {
        console.debug('FOLDER: '+folder.title);
        document.write('<p>'+folder.title+'<br></p>');
    }
</script>

<link rel="stylesheet" href="css/popup.css" type="text/css" />

编辑:

所以上面没有用,但我只想到了另一个解决方案。你什么时候实际调用这个函数?尝试将其放入<body onLoad="functionnamehere()">

不知道这是否有效,但试一试。