美好的一天,祝新年快乐
所以我遇到了一个问题,我宁愿不将所有内容直接绑定到数组中并从那里调用它。我正在建立一个基于旧学校聊天的角色扮演游戏,我遇到的问题是传递由角色统计数据决定的技能。基本上我想要做的是:
我有一堆按钮,共有72种技能:
<td><button type="button" onclick="" class="button" id="math">MATH</button></td>
我想使用他们的onclick事件将技能名称和技能等级传递到页面的目标区域:
<td><input type="text" id="skill1" value="" readonly /></td>
<td><input type="text" id="skillRate1" value="" readonly /></td>
skillRate会反映在适当的变量中,如下所示:
var math = (mem * 3) + (log * 2);
理想情况下,我会将每个目标收件人分别设置为数字技能和技能率,这样一旦选择了所有技能,它就会存储在数组中并上传到数据库中。
最初我在思考这个问题:
function addSkill(){
var n = 0;
for (n = 0; n < 17; n++){
getElementById("skill" + n) = getElementById(this.id);
getElementById("skillRate" + n) = //figure out some way to turn this into the var for skillRate (getElementById(this.id));
}
}
我已经在这里笨拙地待了几天,但似乎无法到达任何地方,我真的宁愿不把所有的技能和他们各自的技能率都放在一个数组中,除非我不得不这样做。
关于如何完成此任务或完全采用其他方法的任何想法或建议?
提前致谢!
答案 0 :(得分:0)
如果我理解你的问题,也许你可以这样做:
对于html
<td>
<button type="button" data-skill="math" data-point="20" onclick="addSkill(this)" class="button" id="math">MATH</button>
</td>
对于javascript
//Start your variables
var tagsSkills = []
var totalPoint = 0;
function addSkill(skill) {
var dataset = skill.dataset;
totalPoint += dataset.point; // Here you will sum the skill's point
tagsSkills.push(dataset.skill); // Add skill into array
}
或许,您可以使用将地图[技能]存储到点的地图结构。并且,只要具备该功能的技巧,您就可以从地图上获得分数。
答案 1 :(得分:0)
不确定为什么你不想要阵列,他们是你的朋友。
此代码将从数组构建一个表,但仅将其用于构建,所有计算稍后将从html中获取。
这是vanilla js,使用jQuery可能更容易/更漂亮。
JS:
//This is just for building the table, you don't have to use it if you don't want array for some reason :S
var skillsArr = [{
firstSkillName: "Memory",
firstSkillValue: 15,
secondSkillName: "Logic",
secondSkillValue: 17
}, {
firstSkillName: "Dexterity",
firstSkillValue: 12,
secondSkillName: "Speedness",
secondSkillValue: 11
}];
var table = document.getElementById("tblSKills");
var tableBody = table.createTBody();
for (i = 0; i < skillsArr.length; i++) {
var row = tableBody.insertRow(i);
var cell = row.insertCell(0);
cell.innerHTML = skillsArr[i].firstSkillName + ": " + "<span>" + skillsArr[i].firstSkillValue + "</span>";
cell = row.insertCell(1);
cell.innerHTML = skillsArr[i].secondSkillName + ": " + " <span>" + skillsArr[i].secondSkillValue + "</span>";
cell = row.insertCell(2);
cell.innerHTML = "<button onclick='doMath(this)'>DO THE MATH</button>";
}
function doMath(currnetBtn) {
var currentRow = currnetBtn.parentElement.parentElement; //TD -> TR
var currentCells = currentRow.children;
var skill1 = document.getElementById("skill1");
var skill2 = document.getElementById("skill2");
var mathResult = document.getElementById("mathResult");
skill1.value = currentCells[0].innerText;
skill2.value = currentCells[1].innerText;
mathResult.value = (currentCells[0].children[0].innerText/1) * 3 + (currentCells[1].children[0].innerText/1) *2 ;//This is your *3 + *2 function or whatever you want.
//You can also make that each skill set will have its' own math function.
}
HTML:
<h1>
Welcome to my skill page!
</h1>
<h2>
Your results:
</h2>
<label id="lbl1"></label>
<input id="skill1" readonly />
<label id="lbl2"></label>
<input id="skill2" readonly />
<label>Result:</label>
<input id="mathResult" readonly />
<table id="tblSKills">
</table>