我正在做一个项目,在这个项目中,我需要几种方法将数组中的对象(特别是字符串)连接到额外的文本位,这些文本位相当于几句话。
目前,我有一个函数可以创建数组,并用与正在玩的游戏相关的值(字符串和数字)填充它:
/* store names by male and female for selection later */
var aliasM = ["Spike", "Mike", "Pops", "Noodles", "Shorty"];
var aliasF = ["Shanna", "Rose", "Sugar", "Alana"];
function aliasSelector() {
if (Math.random() <= 0.55) {
alias = aliasM[Math.floor(Math.random() * aliasM.length)];
var mTook = aliasM.indexOf(alias);
aliasM.splice(mTook, 1)
} else {
alias = aliasF[Math.floor(Math.random() * aliasF.length)];
var fTook = aliasF.indexOf(alias);
aliasF.splice(fTook, 1);
}
return alias;
}
function playerGen(name, alias, turns, mech, cash, credit) {
this.name = name;
this.alias = aliasSelector();
this.turns = 0;
this.mech = Math.ceil(Math.random() * 5);
this.cash = 1000 + Math.round(Math.random() * 1000);
this.credit = Math.round(Math.random() * 2000);
}
/*Next we create array objects for each player */
function nameCheck() {
p1 = document.getElementById("p1Entry").value;
if (p1 !== "") {
playerList.push(new playerGen(p1));
}
/* and so on */
}
我想包括的是每个别名的简短描述。因此,如果玩家获得别名"Spike",就会有一小段告诉我们关于Spike的信息。
如果不将句子包含在数组中,我不知道如何建立这种联系。我认为某种条件可能会起作用,或者创建某种将名称与段落连接起来的符号,存储为变量spikeInfo。我认为最后一种方法最有意义,比如:
var SpikeInfo = "Spike is an HVAC specialist from Fresno who....";
这些东西可以存储在另一个文件中吗?这样做有价值吗?那是一个.txt文件,还是另一个.js文件?
如果您希望在网页上执行此操作,并且将别名信息存储为名为nameBio.html
或类似文件,则可以使用AHAH获取并插入bio。AHAH将获取文件并将其插入HTML元素。如果您想在加载后收集文本,只需获取将其提取到的元素的innerHTML
,或者修改AHAH代码。
这里有一个的例子
HTML
<div id="name"></div>
<div id="bio"></div>
JS-
//Let's assume your randomly picked name is stored in a variable called randNm
var fileName = randNm + "Bio.html";
ahah(filename,bio)
document.getElementById("name").innerHTML = randNm;
var bioText = document.getElementById("bio").innerHTML
nmBio.html:
<!--This Bio Should Be Stored Like This -->
<p>
Lorem Ipsum Dolor Sit Amet Is Absolute Gibberish And Not Even Close To Real Latin...
</p>
如果名称为"Spike",则此代码将获取一个名为"SpikeBio.html"的文件。现在,您可以获取并显示您的姓名和相关的生物信息,以及存储在变量中的生物信息。这当然不是一个整洁或优雅的解决方案,但它只需要很少的代码。
您也可以使用两个阵列:
JS:
var names = ["name1","name2",...];
var bios = ["BioForName1","BioForName2",...];
var whichName = Math.floor(Math.random()*names.length-1);
var chosenName = names[whichName];
var chosenBio = bios[whichName];
这假设一个名称的bio在其数组中的位置与其数组中的名称相同。
我会使用类似的对象文字将段落包含在数组中
[{Name:"spike",Bio:"foo"}, ...]
您可以将它存储为Json,并使用内置的js-Jason对象加载它。