无法在php中的每个DOMNodeList项之前插入。只有最后一项更新

时间:2018-06-07 12:22:06

标签: php dom

我尝试在每个具有类<input type="checkbox">的li之前添加标记menu-item-has-children,但dom仅针对最后一项而不是全部更新。代码如下:

    $dom = new DOMDocument();
    $dom->loadHTML( $sanitized_menu );
    $finder = new DOMXPath( $dom );
    $inner_menus = $finder->query( "/html/body//li[ contains( @class, 'menu-item-has-children' ) ]");

    // element to be added
    $elem = $dom->createElement('input');
    $elem_attr = $dom->createAttribute( 'type' );
    $elem_attr->value = 'checkbox';
    $elem->appendChild( $elem_attr );

    $index = 0;

    while( $index < $inner_menus->length ) {
        $insert_val = $inner_menus->item( $index );
        $insert_val->parentNode->insertBefore( $elem, $insert_val);
        $index++;
    }

    $html = $dom->saveHTML();
    print_r( $html );

1 个答案:

答案 0 :(得分:1)

您只创建一个输入,然后多次追加它。

由于元素不能同时存在于多个地方,会移动

while循环中创建元素。