2017-04-20 1 views
-1

Je crée un élément avec ce code. Définir l'identifiant tel qu'il devrait être défini. (Ai-je besoin validateOnParse?):getElementByID sur dynamiquement créé des éléments de travail non

$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>"; 

Mais j'obtiens ceci: Fatal error: Uncaught Erreur: appel à une fonction de membre getAttribute() sur null

Il ne peut pas localiser l'élément Je viens de créer, pourquoi?

Répondre

0

Hey_ là,

le problème est pas avec $dom->validateOnParse = true;.

Votre erreur vient de cette ligne de code - $sectionContainer->setIdAttribute("id", TRUE);.

Si vous souhaitez définir l'attribut id de DOMElement comme <div id="myId"></div>, vous avez seulement besoin de $domElement->setAttribute("id", "myId"); que vous avez déjà.

DOMElement::setIdAttribute est indique en fait que cet attribut est l'identifiant unique qui n'a rien à voir avec le id="myId" attribut

(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.

Eh bien, il est pas très clair ce qui est ID de type, mais je peux dire qu'il est quelque chose de différent de l'attribut id de l'élément html.

Vérifier démo HERE

+0

Dans votre exemple, ce qui ne fonctionne avant et après des séjours de sortie pour? Il n'y a qu'une seule sortie entre Avant et Après. Donc c'est confus. – Meglio

+0

Je ne sais pas aussi. Je vois que le code sur cette plate-forme peut être écrasé et je suppose que quelqu'un l'édite ... L'important dans ce sujet est que si vous voulez définir l'attribut 'id' vous le faites avec [** setAttribute **] (http : //php.net/manual/en/domelement.setattribute.php) au lieu [** setIdAttribute **] (http://php.net/manual/en/domelement.setidattribute.php) – codtex

+0

Je pense que le code avec Avant et après ne fait que confondre les choses. – Meglio