繁体   English   中英

如何将用户输入保存在另一个变量中

[英]How to save user input in another variable

我试图在 javascript 中用星号屏蔽密码,而不是使用type="password"因为它不是星号。 所以我将密码保存在一个变量中,然后创建一个新变量,用星号(*)替换密码。 之后,我尝试将var y传递给另一个get()函数以获取密码条件。 问题是似乎var y没有传递给get()函数。

 <!DOCTYPE html> <html> <body> <p>A function is triggered when the user releases a key in the input field. The function transforms the character to upper case.</p> Enter your name: <input type="text" id="pass" onkeyup="myFunction()"> <button onclick="get()">get password</button> <script> function myFunction() { var y = document.getElementById("pass"); get(y); var x = document.getElementById("pass"); x.value = x.value.replace(/./gi, '*'); } function get(y){ var pass = y; document.getElementById("p").innerHTML = pass; } </script> <p id="p"></p> </body> </html>

这个脚本应该可以工作,我只是将“pass”声明为全局变量,这样你就可以在里面存储值并且在函数结束时不会丢失它

var pass ="";
function myFunction() {
  var y = document.getElementById("pass");
  get(y);
  var x = document.getElementById("pass");
  x.value = x.value.replace(/./gi, '*');
}

function get(y){    
  pass += y.value[y.value.length -1];
  document.getElementById("p").innerHTML = pass;
}

更新 1

pass += y.value[y.value.length -1];

等于pass = pass + y.value[y.value.length -1]; 所以如果你已经插入了“123”并且你想插入“4”,这一行将执行pass = "123" + y.value[y.value.length -1];
现在让我们谈谈y.value[y.value.length -1]; y.value 是你里面的值,y.value.lenght 是你的字符串的长度(字符串是一个字符数组)所以如果你的标签中有 "***4" y.value.length等于 4 .
在 javascript 和大多数其他语言中,您可以像处理数组一样从字符串中选择单个字符。 请参阅下面的示例

var text = "abcd";
text[0] // "a"
text[1] // "b"
text[2] // "c"
text[3]+text[0]// "da"

所以如果我们有y.value = "***4"y.value.length = 4你必须减去 1 因为数组从 0 开始,如果你做y.value[y.value.length -1]你会取最后一个字符。 所以

//pass = "123"
//i insert "4"
pass += y.value[y.value.length -1]; // pass = "123" + "4"
//pass = "1234"
         var y = document.getElementById("pass").value;

使用它来传递值,但是每当您单击按钮时,它都会替换为星号,因为您还使用了一个 onclick 函数,然后检查单击输入值是否为星号,不要更新您的变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM