【问题标题】:How to change window.location urls with text <input> boxes如何使用文本 <input> 框更改 window.location url
【发布时间】:2017-07-14 08:23:37
【问题描述】:

好的,我正在制作一个视频游戏,我希望玩家能够通过文本输入框在游戏中选择自定义文件。我能够让一切正常工作,但是当我点击 Load Level 按钮时,它会带我去:

.../自定义级别/undefined.html 我尝试了其他一些方法,但我得到的唯一其他东西是:

.../自定义级别/[object 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";
}

我当前尝试访问的文件名为“CLevel1”

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

【问题讨论】:

  • 你返回一个对象试图调用它Levellink.value
  • 他的作业中有.value

标签: javascript html html-input


【解决方案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");
    }
}

【讨论】:

  • 嘿伙计!谢谢!在您回答之前,我查看了您的个人资料(我希望您能感觉到您是专业人士)。感谢我刚刚添加的编码简化,效果很好!我喜欢警报添加!
  • 是否可以测试 LevelLink 值是否是文件名?例如:如果我试图访问标有 FirstLevel 的文件但不小心放入了 FstLevel。是否可以测试名称 FstLevel 是否是文件的名称,如果不是则返回警报?
  • 您可以对 URL 执行 AJAX GET 请求。如果成功,则进行重定向,如果失败则显示警报。
  • 为什么不使用列出有效名称的下拉菜单,而不是文本框?
  • 我们会知道自定义关卡的名称可以更改(因为有自定义),我认为唯一的方法是使用文本框。我不认为您可以仅使用 javascript 来检索文件名信息吗?
【解决方案2】:

我想你可以尝试以下方法:

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



顺便说一句:
setInterval 弄错了,你应该使用 setInterval(gameLoop, 10);(即使 10 可能不是很好/浏览器无法维护,尝试 100 并在太多时减少数量)

【讨论】:

  • window.locationlocation.href 做同样的事情。
  • OP 报告说他在他的 URL 中获得了 [object HTMLInputElement]。这意味着字符串化值也存在问题。这并不能完全解决问题。
  • 我知道我会解决的!
  • 我刚刚修好了它,它工作了!感谢您发现这一点!
  • @Zomry 在更改为在选择器上插入 .value 之前出现在帖子中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 2021-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多