msnWebSearch.drawResultBox = function (e) { var divSearchBox= document.createElement(div); var divHeading = document.createElement(div); var divResultsPane = document.createElement(div); var aCloseLink = document.createElement(a); 前面这些代码经由createElement()方法创建HTML元素。在创建这些元素后,你就能够开始赋予它们属性。上面完成终结(封尾)的两个元素分别是aCloseLink和divHeading:
msnWebSearch.drawResultBox = function (e) { var divSearchBox= document.createElement(div); var divHeading = document.createElement(div); var divResultsPane = document.createElement(div); var aCloseLink = document.createElement(a); aCloseLink.href = #; aCloseLink.className = ajaxWebSearchCloseLink; aCloseLink.onclick = this.close; aCloseLink.appendChild(document.createTextNode(X)); divHeading.className = ajaxWebSearchHeading; divHeading.appendChild(document.createTextNode(MSN Search Results)); divHeading.appendChild(aCloseLink); var divLoading = document.createElement(div); divLoading.appendChild(document.createTextNode(Loading Search Feed)); divResultsPane.className = ajaxWebSearchResults; divResultsPane.appendChild(divLoading); divSearchBox.className = ajaxWebSearchBox; divSearchBox.appendChild(divHeading); divSearchBox.appendChild(divResultsPane); document.body.appendChild(divSearchBox); this.position(e, divSearchBox); return divSearchBox; }; 通过这种方式建立msnWebSearch对象后,必须把divSearchBox返回到它的调用者以便进行其它操作。你可以已经猜出,position()方法负责放置该搜索框。它接受两个参数:传递到drawResultBox()的事件对象和divSearchBox元素:
msnWebSearch.position = function (e, divSearchBox) { var x = e.clientX + document.documentElement.scrollLeft; var y = e.clientY + document.documentElement.scrollTop; divSearchBox.style.left = x + px; divSearchBox.style.top = y + px; }; 前两行代码得到左边和顶部位置,用于放置搜索结果框。执行这个操作要求使用两种信息。首先是鼠标的x和y坐标(这些信息被存储在clientX和clientY属性)。
msnWebSearch.search = function (e,sSearchTerm) { var divSearchBox = this.drawResultBox(e); var url = encodeURI(websearch.php?search= + sSearchTerm); var oParser = new XParser(url); oParser.onload = function () { msnWebSearch.populateResults(divSearchBox.childNodes[1],oParser); }; };