$doc = new DOMDocument();
echo $doc->getElementById('atest')->setAttribute("color", "#fff");
...
$color = $doc->getElementById('atest')->getAttribute("color");
Det finns inget värde på 'color' på ett element, som du försöker kalla på.
5 svar · 519 visningar · startad av Schmoo2
Hej,
Jag skulle vilja nå en div och sätta dess width med PHP när dok laddas. Går det? Jag började med att försöka nå elementet med hjälp av getElementById i PHP. Jaghar gjort en enkel testsida och nedan syns php-koden. Men jag får ingen info från getElementById. getElementsByTagName funkar. Vad gör jag för fel?
<html>
<head>
<title>My Page</title>
<style>
#id { color:#33FF66; width:40px;}
</style>
</head>
<body>
<p id="atest"><a href="/mypage1">Hello World!</a></p>
<p><a href="/mypage2">Another Hello World!</a></p>
</body>
</html>
$doc = new DOMDocument();
// need to validate document before refering to the id
$doc->validateOnParse = true;
$doc->loadHTMLFile("test.html");
echo $doc->getElementById('atest')->color;
$tags = $doc->getElementsByTagName('a');
foreach ($tags as $tag) {
echo $tag->getAttribute('href');
}
$doc = new DOMDocument();
echo $doc->getElementById('atest')->setAttribute("color", "#fff");
...
$color = $doc->getElementById('atest')->getAttribute("color");
Det finns inget värde på 'color' på ett element, som du försöker kalla på.
Har testat med height och width också men får inget värde. Jag får ingen info från getElementById men getElementsByTagName funkar. Det är width jag vill kunna ändra, color vara bara en test för att försöka få ngt alls.
Men ditt 'atest'-element har ju inga attribut definierade, förutom ett id. Eftersom att du använder CSS i head-taggen för att definiera längd, höjd och färg får inte ditt element dessa attribut. Du får bygga om din HTML-sida eller göra en väldigt krånglig work-around som läser av CSS-informationen och var den appliceras samt hur du kan ändra den - inget jag rekommenderar.
<html>
<body>
<p id="Paragraph" width="400">
</p>
</body>
</html>
$doc = new DOMDocument();
$pWidth = $doc->getElementById("Paragraph")->getAttribute("width");
echo "Paragrafens bredd är satt till: " . $pWidth;
Märker att jag verkligen skrev fel; det ska ju vara #atest inte #id. Ttyvärr så trots ändringen så funkar det inte. Kan man inte göra $doc->loadHTMLFile("test.html") på pen html-fil? Så att också getElementById och inte bara getElementsByTagName funkar. Varför funkar getElementsByTagName och inte getElementById ?
Nu har jag ju skrivit det två gånger. När du märker upp höjd, bredd och färg bl.a. (eg. allt du märker upp) med CSS, ärver inte elementet de egenskaperna - webläsaren applicerar bara de egenskaperna på utmärkta objekt/element. Du får hårdkoda in egenskaperna för elementet, som jag gjorde i mitt förra exempel. Då och endast då kan du få ut den informationen med getElementById().