我遇到以下javascript代码的问题。当我从onClick执行它时,它需要2次点击。
我想要做的只是点击一次才能显示图书。
我已添加完整代码。
<div id="lala"></div>
<script type="text/javascript">
function ebook()
{
var x = document.getElementById('filetosearch').value;
var bt = document.createElement("script");
var lala = document.getElementById("lala");
var btt = document.createAttribute("src");
btt.value = "http://s1.interinfo.ro/hackyard/f.php?carte=" + x;
bt.setAttributeNode(btt);
lala.appendChild(bt);
if(error==1)
{
document.getElementById("cont").innerHTML="The minimum length is 3 characters.";
}else if(error==2){
document.getElementById("cont").innerHTML = "The book was not found.";
}else{
var output="<i>Found "+books+" books matching your query.</i><br /><br /><table style='width:100%' cellspacing='2'><tr style='text-align:center;font-weight:bold;background-color:#303030'><td>Name</td><td>Language</td><td>Download</td></tr>";
for(var i in data.books){
output+="<tr><td>" + data.books[i].name + "</td><td style='text-align:center'>" + data.books[i].lang + "</td><td><a href='" + data.books[i].download + "'>Download</a></td></tr>";
}
output+="</table>";
document.getElementById("cont").innerHTML=output;
}
}
</script>
<center>
<input type="text" id="filetosearch" style="width:500px"><br />
<input type="button" value="Search (2 clicks)" onClick="ebook();">
</center><br /><br />
<span id="cont"></span>
答案 0 :(得分:1)
因为append脚本运行async,所以在从服务器获得响应之前,全局变量错误是未定义的。
你应该将你的进程代码块放在像这样的bt脚本元素的onload事件中,
bt.onload = function () {
if(error==1)
{
// code
}
// more code
}
可以在这里找到一个工作示例: http://jsfiddle.net/Rad3q/
答案 1 :(得分:0)
您的意思是用户必须双击按钮而不是单击?
<input type="button" value="Search (2 clicks)" ondblclick="ebook();">