我被告知不要使用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被视为良好实践吗?
答案 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
元素中。)