我正在构建一个应用程序,因此必须对输入字符串进行一些转换。我需要删除空格,标点符号,并使所有内容都变小写。尝试测试时没有任何输出。
此外,我需要确保输入框中输入多个单词,并且至少输入60个字符。
const text = document.querySelector('#normalized_text');
const string = document.querySelector('#message');
function encodeMessage() {
let newMessage = string.replace(/[^a-zA-Z0-9]/g, "").toLowerCase();
console.log(newMessage);
text.innerHTML = newMessage;
return newMessage;
}
<form>
<input type="text" placeholder="Type your secret message" id="message">
</form>
<button type="submit" class="button" onclick="encodeMessage()">Encode message</button>
<div class="box">
<h3>Normalised Text</h3>
<p id="normalized_text"></p>
</div>
答案 0 :(得分:1)
当前,您不是要替换对象“字符串”的值,而是要替换对象。如果您检查开发人员控制台,则会发现错误消息。我建议在创建网页时尽可能使用开发者控制台(通过检查元素),因为它可以在脚本中显示错误。
您应该将JavaScript代码更改为以下内容:
const text = document.querySelector('#normalized_text');
const string = document.querySelector('#message');
function encodeMessage() {
let newMessage = string.value.replace(/[^a-zA-Z0-9]/g, "").toLowerCase();
text.innerHTML = newMessage;
return newMessage;
}
答案 1 :(得分:0)
这里有几个问题:
1-正如@epascarello所指出的那样,您的按钮属于Submit类型,默认情况下会刷新页面。在这种情况下,我们不希望这样,只需将您的按钮设为按钮类型即可。
2-您正在尝试操纵对象sdcard/Documents/
,而不是它的值!尝试改为使用string
。
关于字数检查,您可以将字符串除以空格字符并检查结果数组的长度。
string.value
const text = document.querySelector('#normalized_text');
const str = document.querySelector('#message');
function encodeMessage() {
var message = str.value;
if(getWordCount(message) < 2 || message.length < 60) {
console.log("Invalid message.");
return null;
}
let newMessage = str.value.replace(/[^a-zA-Z0-9]/g, "").toLowerCase();
console.log(newMessage);
text.innerHTML = newMessage;
return newMessage;
}
//gets word count of a string
function getWordCount(s) {
return s.split(" ").length;
}