删除alert()后,代码的行为会很奇怪
When alert() is removed, code behaves strange
Helo,
我正在构建一个搜索框,提供选择并使用箭头进行导航。它与alert()配合使用效果很好,但如果删除alert,它会高亮显示(=更改背景属性),然后取消高亮显示。在调试器中时,它工作正常。我怀疑事件捕获过多。问题出在哪里。
警报必须在此功能中:
function ChangeCurrentCell()
{
//alert('Row' + currentRow);
var tableID = document.getElementById("seach_table");
var tableRow = tableID.getElementsByTagName("tr");
var cellToLight;
//checking rows
total_rows = tableRow.length;
//alert('Total'+total_rows);
if (currentRow<0)
{
currentRow=0;
}
if (currentRow>=total_rows)
{
currentRow=total_rows-1;
}
// clear everything
for (var i=0; i < total_rows; i++)
{
tableRow = tableID.getElementsByTagName("tr")[i];
cellToLight = tableRow.getElementsByTagName("td")[0];
tableRow.style.backgroundColor = "#FFF";
}
//hightlight required
tableID = document.getElementById("seach_table");
tableRow = tableID.getElementsByTagName("tr")[currentRow];
cellToLight = tableRow.getElementsByTagName("td")[0];
tableRow.style.backgroundColor = "#aaa";
}
HTML:
<input type='edit' id='text_to_search' name='text_to_search' autocomplete="off" value=''
size='25' onkeyup='return update_search_offer(event);' onkeypress="return check_for_enter_code(event);" onkeydown="return navigate(event);">
完整的JavaScript:
function update_search_offer(event)
{
if (event.keyCode == 27)
{
//alert('Hide');
document.getElementById("text_offer").style.visibility='hidden';
}
else
{
document.getElementById("text_offer").style.visibility='visible';
if (document.getElementById("text_to_search").value == '')
{
document.getElementById("text_offer").style.display = "none";
}
else
{
document.getElementById("text_offer").style.display = "block";
var word_search = ""+document.getElementById("text_to_search").value;
$.post("_lookup.php", { query: word_search }).done(function(data) {
document.getElementById("seach_table").innerHTML = data;
if (data == '')
{
document.getElementById("text_offer").style.display = "none";
}
});
}
}
}
function offer_selected(selection)
{
document.getElementById("text_to_search").value =selection;
document.getElementById("search_button").click();
}
function check_for_enter_code(e)
{
//alert('Call');
e = e || window.event;
if (e.keyCode == 13)
{
if (document.getElementById("text_to_search").value == '')
return false;
else return true;
}
else
return true;
}
var currentRow = 0;
var total_rows=0;
function ChangeCurrentCell()
{
//alert('Row' + currentRow);
var tableID = document.getElementById("seach_table");
var tableRow = tableID.getElementsByTagName("tr");
var cellToLight;
//checking rows
total_rows = tableRow.length;
//alert('Total'+total_rows);
if (currentRow<0)
{
currentRow=0;
}
if (currentRow>=total_rows)
{
currentRow=total_rows-1;
}
// clear everything
for (var i=0; i < total_rows; i++)
{
tableRow = tableID.getElementsByTagName("tr")[i];
cellToLight = tableRow.getElementsByTagName("td")[0];
tableRow.style.backgroundColor = "#FFF";
}
//hightlight required
tableID = document.getElementById("seach_table");
tableRow = tableID.getElementsByTagName("tr")[currentRow];
cellToLight = tableRow.getElementsByTagName("td")[0];
tableRow.style.backgroundColor = "#aaa";
}
function navigate(event)
{
if(event.keyCode == 38) //up arrow
{
currentRow--;
ChangeCurrentCell();
return false;
}
else if(event.keyCode == 40) //40 - down arrow
{
currentRow++;
ChangeCurrentCell();
return false;
}
}
我明白了。问题出在每次调用并更新表的AJAX方法中。我在函数update_search_offer()中添加了下一个代码:
else if ((event.keyCode == 38) || (event.keyCode == 40))
{
// do nothing
}
所以,如果按下向上或向下键,它不会更新字段。对不起,打扰你了。
相关文章:
- 从桌面读取python文件时高亮显示代码
- 如何将函数包装在函数中以避免代码重复
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 货币代码为欧元-金额的格式不应包含小数
- Regex代码只允许一个空格
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 删除alert()后,代码的行为会很奇怪
- 使用Alert()显示实际的HTML代码
- 如果我在其中使用alert,Javascript代码就可以工作,否则它'It’不起作用
- alert命令所需的html或javascript代码帮助
- 没有javascript中的alert(),代码就无法工作
- 在网站上有一个代码,与alert一起工作,但在满足if条件时不链接到另一个网站
- 在custom 'alert'或& # 39;确认# 39;框中剩余的代码在按ok之前得到执行
- Javascript -删除"alert"导致剩余代码不执行
- ALERT框未显示,问题在代码中,而不是浏览器中
- 为什么这个播放音频的Javascript代码需要在前面有alert()才能工作
- 为什么 alert() 会破坏代码执行
- Alert在运行代码时显示错误的消息
- 代码可以使用alert,但不能没有alert
- 在Firefox中以错误的顺序执行的代码,在alert之后使用setTimeout