2017-04-20 12 views
-1

私はこのコードで要素を作成しています。 IDを設定する必要があります。動的に作成された要素のgetelementbyidが機能しない

$sectionContainer = $dom->createElement('div', $section); 
$sectionContainer->setAttribute("id", $section); 
$sectionContainer->setIdAttribute("id", TRUE); 
$dom->validateOnParse = true; 
$divup->parentNode->insertBefore($sectionContainer, $divup); 


echo 'avant'."</br>"; 
echo $section; 
print_r($dom->getElementById($section)->getAttribute('id')); 
echo 'apres'."</br>"; 

しかし、私はこの取得::(?私はvalidateonparseが必要です) 致命的なエラー:不明なエラーは:

だから、要素を見つけることができないヌルにメンバ関数のgetAttribute()の呼び出し私はちょうど作成した、なぜ?

答えて

0

Hey_あり、

問題は$dom->validateOnParse = true;ではありません。

このエラーコードは、$sectionContainer->setIdAttribute("id", TRUE);です。

DOMElementのid属性を<div id="myId"></div>のように設定する場合は、既に持っている$domElement->setAttribute("id", "myId");のみが必要です。

DOMElement::setIdAttributeは、実際まあ、型IDが何であるかを非常に明確ではありませんが、私はそれがあると言うことができ、この属性はid="myId"属性

(PHP 5, PHP 7)

DOMElement::setIdAttribute — Declares the attribute specified by name to be of type ID

Description

public void DOMElement::setIdAttribute (string $name , bool $isId)

Declares the attribute name to be of type ID.

とは何の関係もありません一意の識別子であることを示していますHTML要素のid属性とは異なるものです。

チェックデモHERE

+0

あなたの例では、出力が滞留する前と後に、何をしますか? BeforeとAfterの間には1つの出力しかありません。それは混乱しています。 – Meglio

+0

私も知らない。私はこのプラットフォーム上のコードを上書きすることができ、誰かがそれを編集すると思います...このトピックの重要な点は、 'id'属性を設定するには[** setAttribute **](http代わりに[** setIdAttribute **](http://php.net/manual/en/domelement.setidattribute.php) – codtex

+0

私はそのコードを前と後は物事だけを混乱させる。 – Meglio

関連する問題