<a id="link1" name="link1" href="http://bbs.51js.com/">51js</a>
=============
同一頁面內的引用方法:
1、使用id:
link1.href
2、使用name:
document.all.link1.href
3、使用sourseIndex:
document.all(4).href //注意,前面還有HTML、HEAD、TITLE和BODY,所以是4
4、使用連結集合:
document.anchors(0).href //全部的集合有all、anchors、applets、areas、attributes、behaviorUrns、bookmarks、boundElements、cells、childNodes、children、controlRange、elements、embeds、filters、forms、frames、images、imports、links、mimeTypes、options、plugins、rows、rules、scripts、styleSheets、tBodies、TextRectangle,請參考MSDN介紹。其實方法3和方法4是一樣使用的集合,只是一個是all,可以包括頁面所有標記,而anchors只包括連結。
5、getElementById:
document.getElementById("link1").href
6、getElementsByName:
document.getElementsByName("link1")[0].href //這也是一個集合,是所有name等於該方法所帶參數的標記的集合
7、getElementsByTagName:
document.getElementsByTagName("A")[0].href //這也是一個集合,是所有標記名稱等於該方法所帶參數的標記的集合
8、tags集合:
document.all.tags("A")[0].href //與方法7一樣是按標記名稱取得一個集合
除此之外,event.scrElement可以獲得觸發時間的標記的引用;document.elementFromPoint(x,y)可以獲得x和y座標處的元素的引用;document.body.componentFromPoint(event.clientX,event.clientY)可以獲得滑鼠所在處元素的引用;還可以通過元素的父子節點和兄弟節點關係來引用,如nextSibling(當前節點的後一節點)、previousSibling(當前節點的前一節點)、childNodes、children、firstChild、lastChild、parentElement等都是父子節點和兄弟節點的一些引用;還不僅限於此。
上面是同一頁面內的常見引用方法,另外還涉及到不同頁面中的
=============
對於分幀的頁面,可以使用parent.frames("幀的name")、top.frames("幀的name")來引用不同的幀,後面的引用和同一頁面內市相同的,多重的parent也是支援的。
例如:
parent.frames("frame1").document.all.link1
top.frames("frame1").document.all.link1
=============
對於window.open()開的視窗,可以使用var newwin=window.open(),然後使用newwin來引用新視窗,後面的引用和同一頁面內是相同的;新視窗可以使用window.opener來引用開啟它的視窗,可以簡寫作opener,例如:
var newwin=window.open()
父視窗(這裡是使用window.open()方法的視窗):
newwin.document.all.link1 //父視窗這句可引用新視窗中的對象
子視窗(window.open()方法開啟的視窗):
opener.document.all.link1 //子視窗這句可引用父視窗的對象
多重opener也是支援的,例如:opener.opener.document.all.link1
方法多種多樣,有時候需要根據具體的情況而定,靈活運用才可以遊刃有餘。