我在尝试调试Javascript函数时遇到了困难。这是从TomCat 7.0 Servlet运行的,因此我不得不用Java编写它,所以我为糟糕的样式道歉。实际的Java文件向浏览器显示目录的内容,通过单击id =“foldername”的div,它应该将该值传递给URL,重新加载该文件夹的页面。唯一的问题是java脚本不断给我下面列出的问题。
<head></head><body><script> function explore(s){ //Trying to make this function work keeps throwing Uncaught Type Error: cannot read property 'id' of null
var x = document.getElementById(s).id;
var newUrl= document.URL.concat(x);
window.location = newUrl; window.alert(x)}</script><list>
<li id="bin"><div id="plus" onclick="explore(bin)">+</div> bin</li>
<li id="conf"><div id="plus" onclick="explore(conf)">+</div> conf</li>
<li id="lib"><div id="plus" onclick="explore(lib)">+</div> lib</li>
<li id="LICENSE"><div id="plus" onclick="explore(LICENSE)">+</div> LICENSE</li>
<li id="logs"><div id="plus" onclick="explore(logs)">+</div> logs</li>
<li id="NOTICE"><div id="plus" onclick="explore(NOTICE)">+</div> NOTICE</li>
<li id="temp"><div id="plus" onclick="explore(temp)">+</div> temp</li>
<li id="tomcat.ico"><div id="plus" onclick="explore(tomcat.ico)">+</div> tomcat.ico</li>
<li id="Uninstall.exe"><div id="plus" onclick="explore(Uninstall.exe)">+ </div> Uninstall.exe</li>
<li id="webapps"><div id="plus" onclick="explore(webapps)">+</div> webapps</li>
<li id="work"><div id="plus" onclick="explore(work)">+</div> work</li>
</list><FORM><INPUT Type="button" VALUE="Back" onClick="history.go(-1);return true;"></FORM></body>
答案 0 :(得分:1)
你应该将字符串传递给你的函数,因为getElementById
需要一个字符串id:
explore('LICENSE');
将此应用于您对explore
函数的所有调用(将参数括在单引号中)。否则javascript会将参数视为变量,因为您没有声明这些变量,所有函数都在接收undefined
答案 1 :(得分:0)
请记住,onclick
中的代码是实际的JavaScript代码。因此,explore(Uninstall.exe);
正在尝试查找exe
中存储的对象uninstall
。你应该在这里使用引号:explore('Uninstall.exe');
。所有这些都是一样的。
顺便说一句,Java在这里完全不相关,你应该学习Java和JavaScript之间的差异。