我正在尝试在JavaScript中用星号屏蔽密码,而不使用type="password"
,因为它不是星号。因此,我将密码保存在一个变量中,然后创建一个新变量以用asterisk(*)替换密码。之后,我尝试将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>
答案 0 :(得分:0)
var y = document.getElementById("pass").value;
使用此值传递值,但是每当您单击按钮时,它也会被替换为星号,因为您还使用了一个onclick函数,并且要检查点击输入值是否为星型,不要更新您的变量
答案 1 :(得分:0)
此脚本应该起作用,我只是将“ 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;
}
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"