我是JS的新手,我正在编写一个完全是客户端的游戏。我有一个关于HTML结构的基本问题。
假设游戏将成为RPG并且我想向用户显示他们角色的统计数据,例如Intelligence 18,Strength 15,Charisma 20等。
现在,由于这些值不是静态的,并且每次新的转弯都会改变(游戏是基于回合的),这些值需要通过JavaScript填充。让我们说我们想在列表中显示它们。
据我所知,有两种方法可以做到这一点,一种方法是保留静态HTML并仅使用JavaScript来填充这样的值:
<ul>
<li>Intelligence:
<div id="IntValue"></div>
</li>
<li>Strength:
<div id="StrValue"></div>
</li>
</ul>
然后在JavaScript中编辑像getElementById("IntValue").innerHTML = "18";
第二种方法可能是只将<ul id="CharStats"></ul>
放入实际的HTML文件中,然后使用JavaScript生成包含所有<li>
元素的整个列表。例如,我可以创建一个tableHTML
字符串,然后逐个动态地将所有<ul>
添加到其中,然后获取CharStats并将其innerHTML
设置为该tableHTML字符串
哪个更好?我知道这取决于具体情况,但是你能否至少指导我使用JavaScript编写这些东西的一些好资源?
答案 0 :(得分:0)
这两种方法都很好,事实上有整个frameworks构建在渲染html客户端以减少服务器负载 - 这些框架需要从服务器提供JSON而不是整个HTML响应之后JS构建了基本上构成页面的HTML代码。
但是在你的情况下,你可能想要以不同的方式做事,以这种方式看待它:
方法A,如果你每回合只更改1个统计数据 - 这是可行的方法,因为你一次更新的DOM数量较少,但你需要更多的ID来跟踪。
方法B,如果你每回合更改多个统计数据,那么你可能想要这样做,因为你可以构建<li>
并且每回合将它们放在ul
内。
这取决于你的情况,方法B确实比方法A更多地修改DOM,但两者都很好用。
注意强>
方法B删除了比方法A更多的元素,请注意,如果你有其他事件处理程序绑定到方法B刷新的元素,你将不得不重新选择这些元素,因为你之前使用的元素将会消失。 / p>
性能明智我不担心方法A或方法B最好。最容易出错的可能就是方法A,因为你正在更新页面上的特定元素(更少的DOM操作意味着更少的错误)。
希望这有助于推动您走向正确的方向,我将框架链接起来以供参考,因为它使用了一种非常酷的方法来显示来自服务器端的数据;)
祝你好运, Sidney Liebrand