Интересует логика:
1) поле #txt он изначально должен показывать в виде ***
2) после нажатия на #btn он должен показать 123456
3) после еще одного нажатия на #btn он должен показать ***
Вот ваш скрипт, чуть чуть переписанный! Сейчас у него логика немного другая от требуемой.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<p><span id="btn">Password</span> <span id="txt">123456</span><br></p>
<script>
btn.onclick=function(){
if(/\*+/.test(txt.innerHTML)) {txt.innerHTML="I am visible"; this.innerHTML="Password"; return}
txt.innerHTML="***"; this.innerHTML="Password"
}
</script>
</body>
</html>