這裏是一個純JavaScript溶液(不jQuery的)使用的
var _Utils = function()
{
this.findChildById = function (element, childID, isSearchInnerDescendant) // isSearchInnerDescendant <= true for search in inner childern
{
var retElement = null;
var lstChildren = isSearchInnerDescendant ? Utils.getAllDescendant(element) : element.childNodes;
for (var i = 0; i < lstChildren.length; i++)
{
if (lstChildren[i].id == childID)
{
retElement = lstChildren[i];
break;
}
}
return retElement;
}
this.getAllDescendant = function (element, lstChildrenNodes)
{
lstChildrenNodes = lstChildrenNodes ? lstChildrenNodes : [];
var lstChildren = element.childNodes;
for (var i = 0; i < lstChildren.length; i++)
{
if (lstChildren[i].nodeType == 1) // 1 is 'ELEMENT_NODE'
{
lstChildrenNodes.push(lstChildren[i]);
lstChildrenNodes = Utils.getAllDescendant(lstChildren[i], lstChildrenNodes);
}
}
return lstChildrenNodes;
}
}
var Utils = new _Utils;
實施例:
var myDiv = document.createElement("div");
myDiv.innerHTML = "<table id='tableToolbar'>" +
"<tr>" +
"<td>" +
"<div id='divIdToSearch'>" +
"</div>" +
"</td>" +
"</tr>" +
"</table>";
var divToSearch = Utils.findChildById(myDiv, "divIdToSearch", true);
你爲什麼不能執行'document.getElementById(「textid」)''的任何原因?如果你可以做'querySelector('#textid')'那麼另一個也應該是可能的。如果你有多個具有相同ID的元素,那麼你必須改變它。 – 2011-04-25 22:30:23
是的,我試圖讓這個元素改變它的ID,我還需要對它做一些其他的操作,這就是爲什麼我想要它在var中。 – Burjua 2011-04-25 23:12:34
這並不能真正回答我的問題。 – 2011-04-25 23:13:16