为什么我的 html/javascript 代码不起作用?

Why isn't my html/javascript code working?

我正在努力做到这一点,所以当我访问该网站时,有一个按钮,当您按下它时,它会提示您输入 "What's the password?" 为了确定它是否正确,我使用了连接字符串接受提示答案并添加 .html 到最后,我希望它重定向到 (passwordtheyenter).html,所以如果他们输入 "test" 作为密码,它会带他们去 "test.html"

这是我的代码:

<!DOCTYPE html>
<html>
<head>
    <script>
        function testFunction() {
        var str1 = prompt.("What's the password?");
        var str2 = ".html";
        var pass = str1.concat(str2);
        }
    </script>
</head>
<body>
<button onclick="testFunction()">Chat</button>


<script>
    open.window(pass)
</script>
</body>
</html>

谢谢。

pass 变量仅在 testFunction 内部定义,因此当您尝试调用 open.window 时无法访问它。

尝试在 testFunction 中返回 pass 并将结果传递给 open.window

您的 HTML/Javscript 代码无法正常工作的主要原因有四个。

首先,变量 pass 的作用域仅在函数内定义,因此只能在该函数内访问。在函数外定义它,然后在函数内设置它的值。

编辑:因为 pass 现在只被函数使用,不需要在它之外定义。

接下来,我相信您正在尝试使用 window.open() 函数。您在代码中写了 open.window()。

第三,你不小心在 prompt() 调用后出现了句号

第四,您应该在函数中调用 window.open(),这样它才不会 运行 直到用户实际单击按钮。

<!DOCTYPE html>
<html>
<head>
    <script>
        function testFunction() {
            var str1 = prompt("What's the password?");
            var str2 = ".html";
            var pass = str1 + str2;
            window.open(pass);
        }
    </script>
</head>
<body>
<button onclick="testFunction()">Chat</button>
</body>
</html>

您可能正在寻找:

function testFunction() {
    // Prompt user for input
    var str1 = window.prompt("What's the password?");
    // Append .html to user input
    var str2 = ".html";
    // Open new window with concatenated result
    window.open( str1.concat(str2) );
}

然后您可以删除:

<script>
    open.window(pass)
</script>

它正在运行:https://jsbin.com/gewudaruda/edit?html,output

尝试将第一个脚本标记替换为下面的标记。 建议使用标签的 'type' 属性来定义脚本类型。

<script type="text/javascript">
    function testFunction() {
    var str1 = prompt("What's the password?");
    window.open(str1+".html");
    }
</script>

您的代码存在的问题如下:

  1. prompt.() 是句法无效的 Javascript 代码。它会给你一个错误,可以在控制台中看到(你可以通过在大多数浏览器中按 F12 或在 Opera 中按 CTRL+SHIFT+I 打开它)。

  2. open.window() 是语义无效的 Javascript 代码。没有全局变量 open。你可能想要的是 window.open(...).

  3. 你的代码写的方式没有多大意义。当按钮被点击时,该函数被调用,但它什么都不做。底部的 Javascript 会给你一个错误,但即使它是有效的 Javascript 它仍然会给你一个错误,因为变量 pass 没有在全局范围内定义;它是在函数内部定义的。一旦函数有运行,变量就会被遗忘

最好在按钮上添加点击处理程序:

<!doctype html>

<!-- The button -->
<button id="my-button">Chat</button>

<script>
    // Get the button
    var myButton = document.getElementById("my-button");

    // Set a click handler on the button
    myButton.onclick = function () {

        // Get the page
        var page = prompt("What's the password?");

        // Set a new location for the window; this sends the
        // current page to the new page
        window.location = page + ".html";
    };
</script>