日期:2014-05-17  浏览次数:20613 次

关于JS中onmuseover的问题

我有一个代码模块,是这样考虑的,
当我的鼠标触摸到了 div 元素块时,代码就将原来的div中的p元素改变为input元素
我的代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<style type="text/css">
p{
width:110px;
height:30px;
padding:5px;
padding-top:20px;
padding-left:5px;
text-align: center;
}
p#quit{
background-color: #7FFF00;
}
p#search{
background-color: #00FFFF;
}
</style>
</head>

<body>
<div id="divSear" >
<p id="search" onmousemove="obtainedSearch()" onmouseout="leaveSearch()">搜索</p>
</div>
</body>
<script type="text/javascript">
function obtainedSearch(){
var srcSear = $("search");
srcSear.style.display="none";

var divSearCon = document.createElement("p");
divSearCon.id = "divSearCon";
var conSear = document.createElement("input");
conSear.type="text";
conSear.style.width="100%";
conSear.style.height = "21px";
var conText = document.createElement("button");
conText.value = "搜索" ;
conText.style.width = "50px";
conText.style.height = "20px";
divSearCon.appendChild(conSear);
divSearCon.appendChild(conText);

var div = $("divSear");
div.appendChild(divSearCon);
}
function leaveSearch(){
setTimeout("exeLeaveSearch()",5000);
}
function exeLeaveSearch(){
var div = $("divSear");
if( null != $("divSearCon") ){
$("divSearCon").style.display="none";
}
var relife = document.createElement("p");
relife.id = "search" ;
relife.innerHTML = "搜索" ;
div.appendChild(relife);
}
function $(id){
return document.getElementById(id);
}
</script>
</html>


-------------------------分割线--------------------------------
问题:
我这个代码,是有问题的。
因为,当我触碰了“搜索”后,我这个代码会“变成”input搜索框,然后5秒钟后恢复原状。
但是:
    问题1、第一次鼠标经过没问题,但是后面无论经过多少次鼠标经过,就是没反应!这是为什么
    问题2、我的代码中,就算我选定了文本框,焦点还在,焦点并未失去,可是一旦到了5秒立即变化!我想我这个代码应该不管他是否5秒,一定要失去焦点才恢复最初阶段,可我不会。 【焦点难就难在我div中的元素本身就是js中增加的!我不会啊!】
    问题3、我的代码,IE中button会显示"搜索"这两个字,但是在chrome中显示不了,为什么?


这三个问题,我好纠结,我看了JS都快5天了!还是搞不定这些,心里好急!!!
因为公司里即将要开始项目了,我想在这之前赶紧学!

我是菜鸟,求教!!!【望三点都回答,因为我都不懂!】