我几乎不熟悉JavaScript。
我想创建一个随机名称生成器,从字符串数组中我得到5个随机名称。这有效,但我想添加许多名称,我想检查没有重复的名称。因此,我想创建一个可以编写名称的文本字段,并使用按钮按下for循环查看数组索引,并使用if语句。 Ť
他是HTML代码:
<div id="box">
<p id="first"></p>
<p id="second"></p>
<p id="third"></p>
<p id="fourth"></p>
<p id="fifth"></p>
</div>
<br>
<input type="button" value="Generier Namen" id="button">
<div>
<input type="text" placeholder="Name.." id="input">
<input type="button" value="Checken" id="checkbutton">
<p id="output"></p>
</div>
这是JavaScript
let namesMale = ["Akemi", "Akechi", "Akihiko", "Akihiro", "Akira", "Amida", "Arata", "Daisuke", "Eichi", "Eiko", "Hajime", "Haru", "Haruo", "Hikaru", "Hiroshi", "Hiroyuki", "Hisoka", "Hoshi", "Isao", "Izanagi", "Kaori", "Kazuhiko", "Kenji", "Kentaro", "Kichi", "Kioshi", "Kitaro", "Kiyo", "Kiyoshi", "Koshiro", "Masahiro", "Masayuki", "Minori", "Mitsuo", "Namiyo", "Naoko", "Nikko", "Ozuru", "Raidon", "Renjiro", "Ryo", "Ryuji", "Sadao", "Satoshi", "Seiichi", "Shinichi", "Shuji", "Taiyo", "Takahiro", "Takeo", "Takiyo", "Taku", "Tama", "Tatsuo", "Tenchi", "Tetsuya", "Tomo", "Torio", "Toshi", "Toyo", "Tsutomu", "Yasashiku", "Yoshi", "Yoshikazu", "Yoshimitsu", "Yoshinori", "Yoshito", "Yoshiyuki", "Yuji", "Yuki", "Yukio", "Yutaka", "Yuudai", "Zinan"];
document.getElementById("button").onclick = function() {
let randomOne = Math.floor(Math.random() * namesMale.length);
let randomTwo = Math.floor(Math.random() * namesMale.length);
if(randomTwo == randomOne){
let randomTwo = Math.floor(Math.random() * namesMale.length);
}
let randomThree = Math.floor(Math.random() * namesMale.length);
if(randomThree == randomOne ||randomThree == randomTwo){
let randomThree = Math.floor(Math.random() * namesMale.length);
}
let randomFour = Math.floor(Math.random() * namesMale.length);
if(randomFour == randomOne || randomFour == randomTwo || randomFour == randomThree){
let randomFour = Math.floor(Math.random() * namesMale.length);
}
let randomFive = Math.floor(Math.random() * namesMale.length);
if(randomFive == randomOne || randomFive == randomTwo || randomFive == randomThree || randomFive == randomFour){
let randomFive = Math.floor(Math.random() * namesMale.length);
}
document.getElementById("first").innerHTML = namesMale[randomOne];
document.getElementById("second").innerHTML = namesMale[randomTwo];
document.getElementById("third").innerHTML = namesMale[randomThree];
document.getElementById("fourth").innerHTML = namesMale[randomFour];
document.getElementById("fifth").innerHTML = namesMale[randomFive];
}
document.getElementById("checkbutton").onclick = function() {
let input = document.getElementById("input").value;
for(let i = 0; i <= namesMale.length; i++){
console.log(namesMale[i]);
if(input.equals(namesMale[i])){
document.getElementById("output").innerHTML = "Existiert";
}
else{
document.getElementById("output").innerHTML = "Existiert nicht";
}
}
}
// ####### Event Handler #######
let pressTab = document.getElementById("button");
pressTab.addEventListener("keyup", function(event){
if(event.keyCode === 13){
event.preventDefault();
document.getElementById("set").click();
}
});
我希望它工作的方式适用于C#和Java,但我的问题是,chrome控制台说:Uncaught TypeError:input.equals不是函数
我怎样才能使它有效,因为在文档中我什么都没发现..
编辑:我忘了说“===”和“==”会得到我(如果名字在列表中或不在)“Existiert nicht”英文“不存在”
您可以使用==来检查相等性
let namesMale = ["Akemi", "Akechi", "Akihiko", "Akihiro", "Akira", "Amida", "Arata", "Daisuke", "Eichi", "Eiko", "Hajime", "Haru", "Haruo", "Hikaru", "Hiroshi", "Hiroyuki", "Hisoka", "Hoshi", "Isao", "Izanagi", "Kaori", "Kazuhiko", "Kenji", "Kentaro", "Kichi", "Kioshi", "Kitaro", "Kiyo", "Kiyoshi", "Koshiro", "Masahiro", "Masayuki", "Minori", "Mitsuo", "Namiyo", "Naoko", "Nikko", "Ozuru", "Raidon", "Renjiro", "Ryo", "Ryuji", "Sadao", "Satoshi", "Seiichi", "Shinichi", "Shuji", "Taiyo", "Takahiro", "Takeo", "Takiyo", "Taku", "Tama", "Tatsuo", "Tenchi", "Tetsuya", "Tomo", "Torio", "Toshi", "Toyo", "Tsutomu", "Yasashiku", "Yoshi", "Yoshikazu", "Yoshimitsu", "Yoshinori", "Yoshito", "Yoshiyuki", "Yuji", "Yuki", "Yukio", "Yutaka", "Yuudai", "Zinan"];
function findName(val) {
for (let i = 0; i <= namesMale.length; i++) {
console.log(namesMale[i]);
if (val == namesMale[i]) {
console.log("Existiert");
} else {
console.log("Existiert nicht");
}
}
}
findName('Yuki');
您还可以使用函数indexOf来查找数组中是否存在特定字符串
let namesMale = ["Akemi", "Akechi", "Akihiko", "Akihiro", "Akira", "Amida", "Arata", "Daisuke", "Eichi", "Eiko", "Hajime", "Haru", "Haruo", "Hikaru", "Hiroshi", "Hiroyuki", "Hisoka", "Hoshi", "Isao", "Izanagi", "Kaori", "Kazuhiko", "Kenji", "Kentaro", "Kichi", "Kioshi", "Kitaro", "Kiyo", "Kiyoshi", "Koshiro", "Masahiro", "Masayuki", "Minori", "Mitsuo", "Namiyo", "Naoko", "Nikko", "Ozuru", "Raidon", "Renjiro", "Ryo", "Ryuji", "Sadao", "Satoshi", "Seiichi", "Shinichi", "Shuji", "Taiyo", "Takahiro", "Takeo", "Takiyo", "Taku", "Tama", "Tatsuo", "Tenchi", "Tetsuya", "Tomo", "Torio", "Toshi", "Toyo", "Tsutomu", "Yasashiku", "Yoshi", "Yoshikazu", "Yoshimitsu", "Yoshinori", "Yoshito", "Yoshiyuki", "Yuji", "Yuki", "Yukio", "Yutaka", "Yuudai", "Zinan"];
function findName(val) {
if (namesMale.indexOf(val) != -1) {
console.log(val+" Existiert");
} else {
console.log(val+" Existiert nicht");
}
}
findName('Yuki');
findName('ABC');
字符串没有这样的方法equals
。你没有定义它的原型。你可以检查一下这样:
if(input == namesMale[i]){
要么,
if(input === namesMale[i]){ // strictly compare
根据提到的错误,您将面临以下错误
if(input.equals(namesMale[i])){ //Error is here, javascript does not contain .equal method
document.getElementById("output").innerHTML = "Existiert";
}
else{
document.getElementById("output").innerHTML = "Existiert nicht";
}
你可以试试
if(input === namesMale[i]) //=== triple equal to check type and value
要么
if(input == namesMale[i]) //== double equal for testing loose equality
不幸的是,在JavaScript中没有用于strgins比较的equals
函数。所以,你可以检查这两个字符串是否与===
运算符相等。总的来说,您的功能必须如下:
document.getElementById("checkbutton").onclick = function() {
let input = document.getElementById("input").value;
for(let i = 0; i <= namesMale.length; i++){
console.log(namesMale[i]);
if(input === namesMale[i]){
document.getElementById("output").innerHTML = "Existiert";
}
else{
document.getElementById("output").innerHTML = "Existiert nicht";
}
}
}
希望它有所帮助,干杯!