以前沒注意過,認為jquery 中的 $("#") 與 document.getElementById("") 是一回事,指的是同一個東西。
這次項目開發在使用驗證碼生成的時候,發現兩者不同,使用時需要注意!
通過以下測試:
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")
posted on 2012-03-16 09:52
canry Tong 閱讀(17590)
評論(8) 編輯 收藏 所屬分類:
js