如何使用文本<input />框更改window.location url

时间:2017-07-14 00:07:56

标签: javascript html html-input

好的,我正在制作视频游戏,我希望玩家能够通过文本输入框选择游戏中的自定义文件。我能够让一切工作正常,但是当我点击“加载级别”按钮时,它会转到:

... / Custom Levels / undefined.html 我尝试了其他一些方法,但我唯一得到的是:

... /自定义级别/ [对象HTMLInputElement] .html

<div>
    <p><input type="text" id="LVLNK" value="Level Name"></p>
    <p><input type="button" id="MButton" value="Load Level" onclick="LDLVLNK()"></p>
    </div>

<script>
var time = setInterval(10,gameLoop)
var LevelLink; /*put: "var LevelLink = document.getElementById("LVLNK");" to get other link example instead*/

function gameLoop()
{
LevelLink = document.getElementById("LVLNK").value;
}

function LDLVLNK()
{
window.location = "../Custom Levels/" + LevelLink + ".html";
}

我目前正在尝试访问的文件名为&#34; CLevel1&#34;

所以我将CLevel1放在输入框中。 gameLoop会将名称设置为LevelLink变量,然后将该变量添加到位于由按钮激活的LDLVLNK函数内部的window.location函数中的完整链接。

2 个答案:

答案 0 :(得分:1)

你向setInterval()的论点倒退,应该是:

setInterval(gameLoop, 10);

但是LevelLink全局变量没有理由。您只需在LDLVLNK()

中获取输入值即可
function LDLVLNK() {
    var LevelLink = document.getElementById("LVLNK").value;
    if (LevelLink) {
        window.location = "../Custom Levels/" + LevelLink + ".html";
    } else {
        alert("Nowhere to go to");
    }
}

答案 1 :(得分:0)

我猜您可以尝试以下方法:

function LDLVLNK(){
  location.href = "../Custom Levels/" + LevelLink + ".html";
//here window is optional, location is a globally accessible object
}



顺便说一句:
你错了setInterval,你应该使用setInterval(gameLoop, 10);(即使浏览器10可能不是很好/可维护,如果它太多,请尝试100并通过触摸减少数量)