javascript - 使用Vanilla JS动态更新页面内容

标签 javascript php dynamic data-manipulation

大家好

所以我正在开发一个项目,它本质上是一个老式的纸笔 Angular 色扮演游戏,在聊天室中运行。但我遇到了困难,因为每个 Angular 色的技能和统计数据都是基于他们的属性的,而在建立初始值的同时,我需要找到一种方法,使统计数据和技能在调整这些属性时动态更新。我知道这对于 Angular 来说可能是小菜一碟,但我认为移动部件越少,它失败的可能性就越小。

本质上,目标是设置 JS,以便在属性更新时技能和统计数据也会更新。这是迄今为止属性的代码:

 <td colspan="2">MEMORY</td>
    <td colspan="2">     
    <button onclick="decMem();" class="modButton" type="button">-</button>   
    <input type="text" id="MEM" class="trait" readonly /><script>document.getElementById("MEM").setAttribute('value', Mem);</script>
    <button onclick="incMem();" class="modButton" type="button">+</button>
  </td>

function incMem(){
if (traitPts > 0 && Mem < 20){
traitMod += 1;
Mem += 1;
traitPts -= 1;
document.getElementById("MEM").setAttribute('value', Mem);
document.getElementById("traitPts").setAttribute('value', traitPts);
} else { alert("CAN'T INCREASE FURTHER");}}

function decMem(){
if (traitMod > 0 && Mem > mem){
traitMod -= 1;
Mem -= 1;
traitPts += 1;
document.getElementById("MEM").setAttribute('value', Mem);
document.getElementById("traitPts").setAttribute('value', traitPts);
} else { alert("CAN'T REDUCE FURTHER");}}

然后每个统计数据或技能都由变量决定,如下所示:

//COMBAT STATS
var seq =   Math.floor((Per + Spd) / 2);
var act =   Math.floor(Spd / 2);
var block = Math.floor((Dex + Spd) / 2);
var dodge = Math.floor((Dex + Spd) / 4);

//UNIVERSAL SKILLS
var stealth =   (Per * 3) + Dex;
var climb =     (Dex * 3) + Str;
var negot =     Cha * 4;
var navig =     (Log * 2) + Per + Mem;

并发送到这样的页面:

<td>STEALTH</td>
  <td><input type="text" id="stealth" readonly/><script>document.getElementById("stealth").setAttribute('value', stealth);</script></td>
  <td>CLIMBING</td>
  <td><input type="text" id="climb" readonly /><script>document.getElementById("climb").setAttribute('value', climb);</script></td>

问题是,如果我重新加载页面,所有属性都会改变,因为它的设置是模拟掷骰子,所以我在这里不知所措。但这是一个PHP页面,所以也许有办法暂时存储数据?请帮忙!

最佳答案

您有几个选项可以使用 Javascript 并在刷新时维护变量。如果您希望在浏览 session 结束时清除信息,则可以使用 sessionStorage,但如果您希望它无限期地可供应用程序使用,则可以使用 本地存储。请参阅MDN用于文档。

基本上,您将在浏览器中“保存”数据的操作是:

localStorage.setItem('myCat', 'Tom');
// or
sessionStorage.setItem('myCat', 'Tom');

然后为了稍后获取数据,您将使用

var cat = localStorage.getItem('myCat');

在本例中,将返回值'Tom'

关于javascript - 使用Vanilla JS动态更新页面内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41991000/

相关文章:

php - 计算数据库中两列中具有相同值的行数 - 使用前 5 行的数量设置 5 个不同 div 的宽度

php - 不允许使用父属性

c# - 将对象转换为已知(但未知)类型

user-interface - Roblox 中动态创建的 GUI

c - Malloc 与 C 中的静态数组

javascript - jQuery - 从 JSON 中提取数据

php 和 html 表单在同一页面上

javascript - webstorm 中的 sourcemap 支持用于单元测试

javascript - 如何使用 jQuery 左右滚动 2 个 div(页面)?

javascript - 连续多次运行 jQuery 函数(对于 Bookmarklet)