我尝试在每个具有类<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 );
答案 0 :(得分:1)
您只创建一个输入,然后多次追加它。
由于元素不能同时存在于多个地方,会移动。
在while
循环中创建元素。