2017-04-20 19 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가 필요하십니까) 치명적인 오류 : catch되지 않은 오류 :

그래서 요소를 찾을 수없는 널 (null)에 멤버 함수의 getAttribute()를 호출 방금 만든거야, 왜?

답변

0

Hey_가,

문제는 $dom->validateOnParse = true;하지입니다.

이 오류 코드는 $sectionContainer->setIdAttribute("id", TRUE);에서 비롯된 것입니다.

DOMElement의 id 속성을 <div id="myId"></div>과 같이 설정하려면 이미 가지고있는 $domElement->setAttribute("id", "myId"); 만 있으면됩니다.

DOMElement::setIdAttribute 실제로이 속성은 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.

음이 형 ID 무엇인지 명확하지 않다과 아무 상관이 고유 식별자 것을 나타내는,하지만 난 그게이라고 말할 수있다 html 요소의 속성이 id과 다릅니다.

확인 데모 귀하의 예에서 HERE

+0

, 무엇을 전후 출력 숙박합니까? Before와 After에는 하나의 출력 만 있습니다. 그래서 혼란 스럽습니다. – Meglio

+0

나는 또한 모른다. 나는이 플랫폼의 코드를 덮어 쓸 수 있고 다른 사람이 편집한다고 생각한다.이 주제에서 중요한 것은'id' 속성을 설정하려면 [** setAttribute **] (http : //php.net/manual/en/domelement.setattribute.php) 대신 [** setIdAttribute **] (http://php.net/manual/en/domelement.setidattribute.php) – codtex

+0

나는 전후는 사물을 혼란스럽게합니다. – Meglio