繁体   English   中英

在 HTML 中调用 JavaScript 函数?

[英]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 == falsetrueLength === 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.

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