何时使用document.write()?

时间:2012-01-09 22:00:48

标签: php javascript

我被告知不要使用document.write()和SO成员。 innerHTML更好,或更好,直接操纵DOM。

但是,如果我是第一次加载页面并且内存存储在mysql表中,因此它将转换为HTML,如果我不想要服务器,我该怎么做呢做这个任务?

如果服务器做到了,那么我可以让PHP代码生成html并将其放在需要的地方..但是b.c.我希望Javasrcript(客户端)呈现我使用此代码的HTML(由php生成,但处理时间较少,因为它不会创建HTML)

 <script type='text/javascript'>document.write(Arc.ViewHBookmark('google.com|http://www.google.com|Google||ideeli.com|http://www.ideeli.com|Ideeli||kikin.com|http://www.kikin.com|Kikin||lot18.com|http://www.lot18.com|Lot18||twitter.com|http://twitter.com|Twitter'))</script>

这就是我让客户端在页面重新加载时生成HTML的方式。带有document.write()的嵌入式Javascript。

有更好的方法吗?更好的我指的是一种不使用document.write()的方法。

我可以调用一个javascipt函数来在onload事件上呈现HTML,但在这种情况下我如何能够访问JSON数据或类似的(AML)。

我可以将它写入页面......然后再读回来,生成内容,然后将其写回页面......但这似乎比使用document.write()

更低效

在这种情况下使用document.write()是O.K吗?

如果没有,是将结构化数据写入页面并将javascript转换为HTML被视为良好实践吗?

3 个答案:

答案 0 :(得分:1)

我们并不确切知道Arc.ViewHBookmark究竟应该做什么,但似乎它正在返回HTML。所以答案很简单:让它直接操作DOM(例如动态添加元素),而不是让它返回HTML字符串。然后调用它而不将其包装在document.write中。

答案 1 :(得分:1)

当然,制作包含数据库数据的javascript对象,然后根据javascript对象的构建方式呈现页面。

答案 2 :(得分:1)

如果我正确理解了这个问题,你可以使用div(或者,取决于上下文,可能是span)元素和空内容,其中你现在拥有'script`元素,例如< / p>

<div id="foo"></div>

然后使用JavaScript将生成的内容放入该元素中:

document.getElementById('foo').innerHTML = Arc.ViewHBookmark(...);

(您可以将其放入script元素之后的div元素中。)