[英]Calling a JavaScript function in HTML?
我对 JavaScript 和 HTML 非常陌生,所以请放轻松。 我试图从我的 HTML 文件中的外部 JavaScript 文件调用一个函数,但我似乎没有做任何事情允许它工作。
JavaScript 代码
var trueLength = false; var password = ""; var things = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()-=_+;':,./<>?"; var input = document.getElementById("len"); function generatePassword(passLength){ // Check to see if selected length is at least 8 characters long while (trueLength = false){ if (passLength > 8){ trueLength = true; } else { passLength = prompt("Password Length must be at least 8 characters long! Please try again. "); } } // Select random character from things and add to password until desired length is reached. for(var x = 0; x <= passlength;){ var randomNum=Math.floor(Math.random()*things.length+1); password = password + things.charAt(randomNum); } alert("Your password is: " + password); document.write("<h1>Your Password</h1><p>" + password + "</p>"); }
<!DOCTYPE html> <html> <head> <title>Password Generator</title> </head> <body> <h1 align="center">Password Generator</h1> <script type="text/javascript" src="PassGen.js"></script> <script> var x = prompt("Enter password length: ") function generatePassword(x); </script> </body> </html>
目标是提示用户输入密码长度,然后生成一个随机密码,该密码将提醒用户并写在屏幕上。 但是,仅打印屏幕顶部的标题。
(我意识到我可以从 JavaScript 文件中取出函数并正常运行它,但我有点想让它保持这样,所以我知道将来如果我再次遇到这种情况该怎么办。)
以下是HTML
文档中<script>
标签内带有 Javascript 的代码。 在 HTML 文件中编写 javascript 代码时应该注意的一件事是,将 javascript 代码包含在 body </body>
的结束标记之前。 所以它只有在你的 html 文件加载时才会执行。 但是如果你在起始 ot html 文件中添加你的 javascript 代码,你的 JS 代码将在文件加载之前执行。
<!DOCTYPE html> <html> <head> <title>Generate Password</title> </head> <body> <h1 align="center">Password Generated will be displayed here</h1> <p id="password" align="center"></p> <script> var PasswordLength = false; var password = ""; var passwordChoice = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()-=_+;':,./<>?"; var input = prompt("Enter password length: "); var pass = document.getElementById("password"); generatePassword(input); function generatePassword(passLength){ while (PasswordLength == false){ if (passLength >= 8){ for(var x = 0; x < passLength;x++){ var randomNum=Math.floor(Math.random()*passwordChoice.length+1); password = password + passwordChoice.charAt(randomNum); } PasswordLength = true; } else { passLength = prompt("Password Length must be 8 characters long."); } } pass.innerHTML = password;} </script> </body> </html>
如果你想把你的 Javascript 代码放在一个单独的文件中,这对大程序很有帮助,那么你需要使用<script>
标签引用该文件,这就是你写下来的方式。
var PasswordLength = false; var password = ""; var passwordChoice = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()-=_+;':,./<>?"; var input = prompt("Enter password length: "); var pass = document.getElementById("password"); generatePassword(input); function generatePassword(passLength){ while (PasswordLength == false){ if (passLength >= 8){ for(var x = 0; x < passLength;x++){ var randomNum=Math.floor(Math.random()*passwordChoice.length+1); password = password + passwordChoice.charAt(randomNum); } PasswordLength = true; } else { passLength = prompt("Password Length must be 8 characters long."); } } pass.innerHTML = password;}
<!DOCTYPE html> <html> <head> <title>Generate Password</title> <script src=""></script> </head> <body> <h1 align="center">Password Generated will be displayed here</h1> <p id="password" align="center"></p> </body> </html>
在您的代码中存在以下问题:
1) 更改function generatePassword(x);
generatePassword(x.length);
2) 将trueLength = false
改为trueLength === false
3) 将for(var x = 0; x <= passlength;){
改为for(var x = 0; x < passLength; x++){
passlength
=> passLength
, x<=
到x<
, 插入x++
4) 改变Math.floor(Math.random()*things.length+1);
到Math.floor(Math.random()*(things.length)+1)
5) 插入passLength = passLength.length;
去else
var trueLength = false; var password = ""; var things = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()-=_+;':,./<>?"; var input = document.getElementById("len"); var x = prompt("Enter password length: ") generatePassword(x.length); function generatePassword(passLength){ // Check to see if selected length is at least 8 characters long while (trueLength == false){ if (passLength > 8){ trueLength = true; } else { passLength = prompt("Password Length must be at least 8 characters long! Please try again. "); passLength = passLength.length; } } // Select random character from things and add to password until desired length is reached. for(var x = 0; x < passLength; x++){ var randomNum=Math.floor(Math.random()*(things.length)+1); password = password + things.charAt(randomNum); } alert("Your password is: " + password); document.write("<h1>Your Password</h1><p>" + password + "</p>"); }
<h1 align="center">Password Generator</h1>
您可以以较低的复杂性使用此代码:
var trueLength = false, password = "" ; var things = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()-=_+;':,./<>?"; var x = prompt("Enter password length: ") generatePassword(x); var input = document.getElementById("len"); function generatePassword(passLength){ while ( passLength.length < 9 ) passLength = prompt("Password Length must be at least 8 characters long! Please try again. "); for ( var x = 0; x < passLength.length ; x++ ) { var randomNum = Math.floor ( Math.random() * (things.length)+1 ); password = password + things.charAt(randomNum); } alert("Your password is: " + password); document.write("<h1>Your Password</h1><p>" + password + "</p>"); }
<h1 align="center">Password Generator</h1>
几样东西。 为了在 HTML 中显示某些内容,您需要在 JavaScript 中选择一个 HTML 元素。 接下来,您在 for 循环中使用了 'passlength' 而不是 'passLength'。 第三,当您编写function generatepassword
,正如 Lux 所说,它是无效的语法。 最后,您的 for 循环不会去任何地方,因为您没有第三个表达式。 应该更改为for(var x = 0; x <= passLength;x++)
编辑:我忘记的另一件事是trueLength = false
应该更改为trueLength == false
或trueLength === false
。
综上所述,这是我的解决方案:
<!DOCTYPE html>
<html>
<head>
<title>Password Generator</title>
</head>
<body>
<h1 align="center">Password Generator</h1>
<p align="center"></p>
<!--script type="text/javascript" src="PassGen.js"></script-->
<script>
var trueLength = false;
var password = "";
var things = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()-=_+;':,./<>?";
//var input = document.getElementById("len");
var ppass = document.querySelector("p");
function generatePassword(passLength){
while (trueLength == false){
if (passLength > 8){
trueLength = true;
} else {
passLength = prompt("Password Length must be at least 8 characters long! Please try again. ");
}
}
for(var x = 0; x <= passLength;x++){
var randomNum=Math.floor(Math.random()*things.length+1);
password = password + things.charAt(randomNum);
}
//alert("Your password is: " + password);
//document.write("<h1>Your Password</h1><p>" + password + "</p>");
ppass.textContent = password;}
var x = prompt("Enter password length: ")
generatePassword(x);
</script>
</body>
</html>
我添加的是一个<p>
标签,用于在生成密码后显示密码。 一旦密码生成完毕,我就使用textContent
来显示它。 我使用document.querySelector
来访问它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.