无法从用户那里获取数字并将其作为参数传递到 JavaScript 切片方法中

unable to get number from user and pass it as a parameter in javascript slice method

提问人:Parth mane 提问时间:4/12/2023 最后编辑:Parth mane 更新时间:4/12/2023 访问量:40

问:

我正在制作一个小应用程序,它显示了如何使用不同的方法在 javascript 中操作字符串,我正在尝试获取数字作为输入并将该数字作为参数传递以切分字符串,但它不起作用,因为我无法从用户那里获取数字。我尝试在控制台中打印该数字,但它显示一个空行

这是我的,可以帮助您了解我在哪里犯了错误 HTML 代码

<input type="number" placeholder="number" class="number1">
<input type="number" placeholder="number" class="number2">
<button class="sliced">slice</button>
<h1 id="displaytext"></h1>

Javascript 代码

let message = document.querySelector("#displaytext")
let slicedButton = document.querySelector(".sliced")
let number1 = document.querySelector(".number1").value 
let number2 =document.querySelector(".number2").value
slicedButton.addEventListener("click", ()=>{
    console.log(number1,number2)
    message.innerHTML = userInput.value.slice(number1, number2)
})
JavaScript HTML 切片

评论

0赞 Abdelrahman 4/12/2023
您能否举例说明您想要什么类型的切片以及变量在文本中指的是什么。例如,假设您想通过数字 1 输入从数字 2 中切出字符串,以获得这样那样的结果。因为从当前的功能和描述来看,我不清楚您要实现的目标。userInput145552
0赞 Parth mane 4/12/2023
userInput 是从用户那里获取字符串的输入字段,我已使用 dom 将其保存为 varible 。感谢您阅读我的问题,我可以向您展示我的代码我找到了答案吗,它可能会帮助您了解问题是什么以及我是如何解决的,因为我是 stack-overflow 的新手,我无法确切地判断问题是什么
0赞 Teemu 4/12/2023
value读取变量只是字符串,它们不与输入的实际值相关联。您必须从侦听器中的输入中读取值。
0赞 Abdelrahman 4/12/2023
@Teemu好吧,我明白了,你的问题是你没有得到听众的价值观,对吧?number1number2
0赞 Abdelrahman 4/12/2023
@Teemu对不起,地址错误。@Path,你只需要在事件侦听器中获取元素。在 DOM 之外可能还没有加载,这就是它们为 null 的原因。或者将所有代码放在事件侦听器中。load

答:

0赞 YouBee 4/12/2023 #1

尝试获取回调函数中的值。

let message = document.querySelector("#displaytext")
let slicedButton = document.querySelector(".sliced")

slicedButton.addEventListener("click", ()=>{
let number1 = document.querySelector(".number1").value 
let number2 =document.querySelector(".number2").value
    console.log(number1,number2)
    //message.innerHTML = userInput.value.slice(number1, number2)
})

评论

0赞 Parth mane 4/12/2023
实际上我找到了答案,而不是直接将 number 1 = document.querySelector(“.number1”).value 保存在变量中,我保存了它而没有 .value,并且在给 slice 方法提供参数时我传递了 slice(number1.value, number2.value)
0赞 Egge 4/12/2023 #2

您的 Javascript 代码会在页面加载后立即执行,这就是立即为 number1 和 number2 分配 “” 的原因。将获取输入值的逻辑移动到侦听器中,以接收最新值:

let message = document.querySelector("#displaytext")
let slicedButton = document.querySelector(".sliced")
slicedButton.addEventListener("click", ()=>{
let number1 = document.querySelector(".number1").value 
let number2 =document.querySelector(".number2").value
    console.log(number1,number2)
    message.innerHTML = userInput.value.slice(number1, number2)
})

但是,这仍然会抛出,因为 uerInput 未定义