Bur*_*jua 29 javascript jquery element
我有以下html:
<div id="note">
<textarea id="textid" class="textclass">Text</textarea>
</div>
我怎样才能获得textarea元素?我不能用document.getElementById("textid")它
我现在这样做:
var note = document.getElementById("note");
var notetext = note.querySelector('#textid');
但它在IE中不起作用(8)
我怎么能这样做?jQuery没问题
谢谢
Khe*_*hez 50
如果jQuery没问题,你可以使用find().它基本上等同于你现在这样做的方式.
$('#note').find('#textid');
您还可以使用jQuery选择器基本上实现相同的功能:
$('#note #textid');
使用这些方法来得到的东西,已经有一ID是那样的陌生,但我提供这些假设这不是真的,你计划如何使用它.
另外,您应该知道ID在您的网页中应该是唯一的.如果您计划使用具有相同"ID"的多个元素,请考虑使用特定的类名.
这是一个纯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);