以前沒注意過,認為jquery 中的 $("#keleyi_com") 與 document.getElementById("keleyi_com") 是一回事,指的是同一個東西。
這次項目開發在使用驗證碼生成的時候,發現兩者不同,使用時需要注意!
通過以下測試:
js中代碼
function reloadValidCode(o) {
alert(o);
o.src = "${pageContext.request.contextPath }/validCodeServlet?timed=" + new Date().getMilliseconds();
}
function refresh() {
alert($("#imageYZ"));
document.getElementById("imageYZ").src = "${pageContext.request.contextPath }/validCodeServlet?timed=" + new Date().getMilliseconds();
}
jsp中代碼
<img src="${pageContext.request.contextPath }/validCodeServlet" id="imageYZ" alt="換一張" onclick="reloadValidCode(this)"/>
看不清?<a href="#this" onclick="refresh();"> 換一張</a>
我很打算在refresh()函數中使用
$("#imageYz").src = "${pageContext.request.contextPath }/validCodeServlet?timed=" + new Date().getMilliseconds();
進行設置,但是發現不行;原來alert(o)的結果是:
[object HTMLCanvasElement]
而alert($("#imageYZ"))的結果是:
[objec Object]
從這裡不難看出兩者真的不一樣;
再用firebug調試看一下,
$("#imageYZ")和document.getElementById("imageYZ")倒底是什麼內容。調試結果如下:
$("#imageYZ") [img#imageYZ]
document.getElementById("imageYZ") img#imageYZ
想必,看到這裡,不用我說,大家也會想到結果了。
實際上,$("#imageYZ")[0]等同於 document.getElementById("imageYZ")