我目前在我的html代码中有一个onclick函数,它是一个自动完成功能。我的目标是将所有javascript从html中移到一个单独的文件中,但是,在这种情况下传输不起作用。
这有效:它正确调用函数
<form>
<input class="input" id="location" onclick="showHint(this.value)" value=""/>
<input class="input_submit" id="fj" type="submit" value="Find!"/>
</form>
这不起作用(虽然它会显示一个警告框 - 所以它正在连接)
<form>
<input class="input" id="location" value=""/>
<input class="input_submit" id="fj" type="submit" value="Find!"/>
</form>
window.onload = function(){
document.getElementById("location").onclick = showHint(this.value);
}
我非常有信心(this.value)需要以另一种方式完成。
非常感谢任何帮助或指导。
结果
所以代码现在适用于此:
document.getElementById("location").onclick = function(){ showHint(this.value);};
当我最初向我推荐上述内容时,我的JS文件中某处的代码看起来不正确,导致无法正常触发。
答案 0 :(得分:1)
不确定window
是否具有onload
属性。即使如此,当JavaScript解释器将函数分配给它时,事件处理程序很久以前就被解雇了,因此你的代码永远不会被运行。
尝试将onclick
初始化放在<script>
最后的<body>
标记内。
<!-- ... -->
<script>
var locationElement = document.getElementById("location");
locationElement.onclick = function() {
showHint(locationElement.value);
};
</script>
</body>
此外,您可以使用 jQuery 并将其设置为
$(document).ready(function() {
$("#location").click(function() {
showHint($(this).val());
});
}
这个更干净一点。作为交换,你需要第三方lib。
答案 1 :(得分:1)
根据您提供的代码并保留HTML相同,这可以为您提供所需的结果:
window.onload = function(){
var showHint = function(val){
alert(val);
};
document.getElementById("location").onclick = function(){
showHint(this.value);
};
};
这是一个显示实际代码的小提琴:http://jsfiddle.net/zsXw5/
希望它有所帮助!