我正在为网站编写一段代码,该网站将在数组中包含一个名称列表,并选择一个随机名称,我想添加一个功能,该功能将允许用户在数组中添加或删除名称。我具有所有这些功能,但是删除名称时,用户必须键入名称以匹配数组中的Case。我试图使它不区分大小写,我在做什么错呢?
<html>
<!--Other code uneeded for this question-->
<p id="canidates"></p>
<body>
<input type="text" id="delname" /><button onclick="delName()">Remove Name from List</button>
<script>
//Array of names
var names = [];
//Other code uneeded for this question
//List of Canidates
document.getElementById('canidates').innerHTML =
"<strong>List of Canidates:</strong> " + names.join(" | ");
//Other code uneeded for this question
//Remove name from Array
function delName() {
var dnameVal = document.getElementById('delname').value;
var pos = names.indexOf(dnameVal);
var namepos = names[pos]
var posstr = namepos.toUpperCase();
var dup = dnameVal.toUpperCase();
if(dup != posstr) {
alert("Not a valid name");
}
else {
names.splice(pos, 1);
document.getElementById('canidates').innerHTML =
"<strong>List of Canidates:</strong> " + names.join(" | ");
}
}
</script>
</body>
</html>
.indexOf()大小写不敏感。您可以规范数组和搜索项之间的大小写。您似乎正在搜索然后转换大小写,所以这对您没有帮助。你可以做.toUpperCase()在dnameVal搜索之前,但如果所有的名字也是大写的,只会工作。