我所拥有的是3个文本框。用户输入字符串的第一个。第二个框,他们输入他们想要替换的第一个字符串的一部分。第三个文本框是要替换的字符串。
我试图使用replace()方法,但我不认为我正确使用它,或者我应该使用其他东西。
HTML:
<form>
Enter a string:<input type="text" id="user_string"><br>
Enter portion of previous string to be replaced: <input type="text" id="replace_string"><br>
Enter new string: <input type="text" id="add_string"><br>
<input type="button" value="Execute" onclick="BaitAndSwitch()"><br>
Result: <input type="text" id="req_4_results"><br>
</form>
使用Javascript:
function BaitAndSwitch(){
// create variables for the user entered data
var UserString = document.getElementById("user_string").value;
var ReplaceString = document.getElementById("replace_string").value;
var AddString = document.getElementById("add_string").value;
var Results = UserString.replace(ReplaceString, Addstring);
if (UserString.indexOf(ReplaceString) > -1) {
Document.getElementById("req_4_results").value = Results;
}
else{
alert("Something went wrong! Please check the data you entered.")
}
}
我知道我做错了什么。也许在.replace()方法中使用变量?或者if ...使用indexOf行?
我基本上试图将其设置为使用ReplaceString的值检查UserString,如果匹配,则它将执行replace()方法并将结果显示给给定的HTML元素。否则,如果ReplaceString与UserString中的任何东西都不匹配,它会提醒用户出错并检查它。
答案 0 :(得分:3)
JavaScript是cAsE SeNsItIvE。请注意,Document
与document
对象不同。请使用以下行:
document.getElementById("req_4_results").value = Results;
哦,是的,正如blex指出的那样,你还有另一个错字:
var Results = UserString.replace(ReplaceString, Addstring);
//-------------------------------------------------^ should be S
更多信息:在控制台中,如果您同时尝试两者,请查看您获得的结果:
typeof Document
// "function"
typeof document
// "object"
旁注, 请不要使用此类命名约定。看起来您正在从Visual Basic迁移。
答案 1 :(得分:1)
请注意,replace()
方法不会修改您调用它的字符串。
在您的代码行中:
var Results = UserString.replace(ReplaceString, Addstring);
UserString
的值不会因为调用replace()
而改变。
在条件声明中:
UserString.indexOf(ReplaceString) > -1
如果是,则表示UserString
仍然至少包含一个ReplaceString
个实例。
这是有道理的,因为你还没有修改UserString
。如果您想确保Results
不再出现ReplaceString
,那么只有在满足以下条件时才会抛出错误:
Results.indexOf(ReplaceString) > -1