Meine Aufgabe besteht darin, ein Textfeld zu haben, das Benutzereingaben akzeptiert, diese Eingabe in ein Array überträgt und dann anhand eines Kontrollkästchens ein fest codiertes Array untersucht, um auszuwerten, ob die Benutzereingabeelemente mit dem hartcodierten Array übereinstimmen Elemente.Wo/wann/warum fällt das erste Array-Element?
Im einfachsten Fall, wo die Saiten genau (auf Groß- und Kleinschreibung basiert) übereinstimmen muss, stimmt meine Codewörter mit, das Spiel zu tun, und ignoriert Wörter, die nicht übereinstimmen. Ich füge die übereinstimmenden Wörter einer Zeichenfolge hinzu und zeige dann die Zeichenfolge in einer Warnung an.
JEDOCH: im zweiten Fall, in dem die Zeichenfolgen die Groß-/Kleinschreibung ignorieren sollen (so kann der Benutzer Groß- und Kleinbuchstaben eingeben), wird bei der Anzeige der Liste der übereinstimmenden Namen immer das erste eingegebene Wort gelöscht in der Benutzereingabe Textfeld. Die Groß-/Kleinschreibungslogik scheint zu funktionieren - das Problem ist, dass eines der Wörter gelöscht wird.
Hier ist mein Code zuerst für die HTML-
function process() {
//create string to store user input
var s = document.getElementById("inputTextBox").value;
//testing text area to display captured input
document.getElementById("textArea").value = s;
//create array to store user input
var inputArray = [];
//create array of names to check user input against
var namesArray = ["John", "Bill", "Mary", "Ted", "Roger"];
//split the string by spaces
var input = s.split(" ");
//put the split string into the inputArray
inputArray = s.split(" ");
//determine length of arrays
var inputArrayLength = inputArray.length;
var nameArrayLength = namesArray.length;
//create string to hold matched names
var matchedNames = "";
for(var i = 0; i < inputArrayLength; i++)
{
//set current name string to current array element
currName = inputArray[i];
//first determine if the checkbox IS checked
if ((document.getElementById("checkBox").checked) == true)
{
//if it is checked, determine if currName == name in namesArray
if (currName == 'John' || currName == 'Bill' || currName == 'Mary' || currName == 'Ted' || currName == 'Roger')
{
matchedNames = matchedNames.concat(currName + " ");
}}
//if it is NOT checked
else if ((document.getElementById("checkBox").checked) == false)
{
//traverse array and toLowerCase all elements
for (var j = 0; j < inputArrayLength; j++)
{
inputArray[j] = inputArray[j].toLowerCase();
}
//then determine if toLowerCase string is present in array
if (currName == 'john' || currName == 'bill' || currName == 'mary' || currName == 'ted' || currName == 'roger')
{
matchedNames = matchedNames.concat(currName + " ");
}
}
}
document.getElementById("textArea").value = matchedNames;
//alert matched names
alert("Matched Names: " + matchedNames + ".");
}
<label>Please enter a series of first names, separated by spaces</label>
<br />
<input id="inputTextBox" type="text" name="textBox1" style="width: 200px;"/>
<br />
<label><input id="checkBox" type="checkbox" name="checkbox1" />toggle case sensitivity</label>
<br />
<input id="Button1" type="button" value="Process" onclick="process();"/>
<br />
<textarea id="textArea" name="textArea1" rows="2" cols="1" style="width: 400px;"></textarea>
Ich bin mir bewusst, viele stilistische Probleme (crappy Namen) gibt es einige ernsthafte Redundanz, und dass dies wahrscheinlich angezogen werden könnten logisch, um weniger Zeilen und etc. zu verwenden
Vielen Dank für Ihre Zeit und Energie! Ich schätze es wirklich. – grcHIDDEN