获取错误:未捕获TypeError:无法读取属性' parentNode'为null

时间:2018-06-06 06:49:47

标签: javascript jquery dom extjs

我正在尝试添加一个div旁边的新div与第一个div的ComponentID的引用我要添加第二个并行div 像:

<div>
    <div id="userActivityStatusMenu-1110">Neighbor 1</div>
    // want new div here
</div>

以下是我正在尝试的脚本:

/* Adds Element BEFORE NeighborElement */
Element.prototype.appendBefore = function (element) {
element.parentNode.insertBefore(this, element);
}, false;

/* Adds Element AFTER NeighborElement */
Element.prototype.appendAfter = function (element) {
element.parentNode.insertBefore(this, element.nextSibling);
}, false;

/* Typical Creation and Setup A New Orphaned Element Object */
var NewElement = document.createElement('div');
NewElement.innerHTML = 'This is new element';
NewElement.id = 'NewElement';

/*  Add NewElement BEFORE -OR- AFTER Using the Aforementioned Prototypes */
NewElement.appendAfter(getComponent(Ext.getCmp("userActivityStatusMenu-1110").itemId));

请让我知道我做错了什么,或者最好的方法是什么

1 个答案:

答案 0 :(得分:1)

  1. getComponent不是全局函数,而是每个ExtJS容器的方法
  2. someContainer.getComponent不会返回DOMElement,而是返回Ext.Component或其后代之一
  3. 要获取任何ExtJS组件的DOM节点,您可以将组件本身或组件的id传递给Ext.getDom(idOrComponent)

    实施例:     NewElement.appendAfter(Ext.getDom(&#34; userActivityStatusMenu-1110&#34));

    注意:建议不要使用 id 字段。而是分配自定义的唯一 itemId ,然后通过Ext.ComponentQuery.query('#itemid')查询组件。

    Note2 :为了完全符合ExtJS的风格,你根本不应该操纵内部HTML结构。而是将新项添加到父元素,或者如果您确实需要插入自定义HTML,请修改您在此处尝试修改的任何组件的html属性或XTemplate。