先看onblur事件和onfocus事件的定義:
<element onblur="SomeJavaScriptCode">
<element onfocus="SomeJavaScriptCode">
雙引號中的內容是一段js代碼,也可以是一個事件函數
在看幾個例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<input name="btn" type="text" placeholder="請輸入顯示歡迎學習js的次數" onfocus="study(prompt('請輸入顯示歡迎學習js的次數'))" >
<script>
function study(count){
for(var i=0;i<count;i++){
document.write("<h4>歡迎學習js</h4>")
}
}
</script>
</body>
</html>
運行以上代碼,鼠標點擊輸入框(使輸入框獲得焦點,如下圖)

輸入數字后,如下圖,

對代碼進行修改,如下圖:

完整代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<input name="btn" type="text" placeholder="請輸入顯示歡迎學習js的次數" onfocus="study(prompt('請輸入顯示歡迎學習js的次數'))" >
<script>
$(document).ready(function study(count){
for(var i=0;i<count;i++){
document.write("<h4>歡迎學習js</h4>")
}
})
</script>
</body>
</html>
再點擊輸入框,使輸入框獲得焦點,發現沒有反應,如下圖

原因在於 ready函數,ready函數創建了一個局部函數作用域,外面是不能調用內部的study函數的。所以 你的onblur事件失效是不是這個原因呢?
解決方案:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<input id="btn" type="text" placeholder="請輸入顯示歡迎學習js的次數" >
<script src="js/jquery-1.12.4.js"></script>
<script>
$(document).ready(function(){
//綁定事件
$("#btn").focus(study);
function study(){
document.write("<h4>歡迎學習js</h4>")
}
})
</script>
</body>
</html>
利用jQuery綁定事件,當然使用原生js綁定也是一樣的
注:jQuery的ready方法就是等待DOM元素加載完便立即執行,原生js接口onload是等待所有html加載完再加載js文件
