为什么我的html / javascript代码无效?

时间:2015-07-10 01:45:26

标签: javascript html concat

我试图这样做,当我去网站时,有一个按钮,当你按下它时,它会提示你输入密码是什么?&# 34;为了确定它是否正确,我使用concat字符串来获取提示答案并将.html添加到最后,我希望它重定向到(passwordtheyenter).html,所以如果他们输入&# 34;测试"作为密码,它会将它们带到" 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>

感谢。

5 个答案:

答案 0 :(得分:2)

您的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>

答案 1 :(得分:1)

您的代码存在以下问题:

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

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

  3. 编写代码的方式没有多大意义。单击该按钮时,将调用该函数,但它不执行任何操作。底部的Javascript会给你一个错误,但即使它是有效的Javascript,它仍然会给你一个错误,因为变量pass没有在全局范围内定义;它是在函数内部定义的。函数运行后,该变量将被遗忘。

  4. 最好在按钮上添加一个点击处理程序:

    <!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>
    

答案 2 :(得分:0)

bar变量仅在pass内定义,因此当您尝试调用testFunction时,无法访问该变量。

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

答案 3 :(得分:0)

你可能正在寻找:

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

答案 4 :(得分:0)

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

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