2010-05-24 36 views
1

我试图使用没有血腥运气的Dom模型,getElementByID只是不适合我。试图替换Div的内容,没有运气

我讨厌诉诸正则表达式,但不知道还有什么要做。

这个想法是用一个新的<div id="content_div"> NEW ALL SORTS HERE </div>代替<div id="content_div"> all sorts </div>,并保留字符串之前或之后的任何东西。

该字符串是一个部分HTML字符串,更具体地说是wordpress文章数据库。

任何想法?

更新:我标记了这个问题PHP但可能应该提到我只寻找一个PHP解决方案。

更新:代码示例

$content = ($wpdb->get_var("SELECT `post_content` FROM $wpdb->posts WHERE ID = {$article[post_id]}")); 

$doc = new DOMDocument(); 
$doc->validateOnParse = true; 
$doc->loadHTMLFile($content); 
$element = $doc->getElementById('div_to_edit'); 

所以我用尽了一大堆的代码,这是什么Ive得到到目前为止,可能不是正确的,但香港专业教育学院在它被黑客攻击了一小会儿吧。

+0

您需要链接到文件,以使用合适的DTD或XSD'getElementById' - 您的主文档有一个DOCTYPE? 此外,您目前如何创建并试图替换元素? – prodigitalson 2010-05-24 17:02:53

+0

能否详细说明'getElementByID只是不适合我'。 ?它应该这样做。或者您可以使用JavaScript库(如原型或jQuery)来更轻松地访问DOM。 – oedo 2010-05-24 17:03:13

+0

document.getElementById你是否有错字getElementById – 2010-05-24 17:03:21

回答

0

确定我认为$content是一个片段?那么这可能是你所需要的:

$doc = new DOMDocument(); 
$doc->validateOnParse = true; 
$doc->loadHTMLFile('<html><body>' . $content . '</body></html>'); 
$element = $doc->getElementById('div_to_edit'); 
+0

它是一个片段,所以在你的例子中,我将如何能够用另一个div替换div'div_to_edit',然后保存HTML? – bluedaniel 2010-05-25 10:57:55

-1

试试这个..

var myDiv = document.getElementById('content_div'); 
myDiv.innerHTML = "NEW ALL SORTS HERE"; 
+0

我认为他在服务器端使用php的DOMDocument ...不是javascript。 – prodigitalson 2010-05-24 17:03:38

+0

我正在寻找一个PHP的答案,我标记它的PHP,但我可能应该提到,以及对不起。 – bluedaniel 2010-05-24 17:04:09

2

你说得对:getElementByID不起作用。

尝试用getElementById()代替。 Javascript是区分大小写的。

0

记住,你必须有一个有效的网页,这意味着完整的HTML树:

<html> 
<head> 
<script type="text/javascript"> 
function changeText(div){ 
    document.getElementById(div).innerHTML = 'my new text'; 
} 
</script> 
</head> 
<body> 

--- your body --- 

<div id="DIV_ID">old text</div> 

<input type="button" onclick="chageText('DIV_ID');" value="Click me" /> 

</body> 
</html>

记住,你要调用的getElementById有:

<script type="text/javascript"> // as from HTML5 you can use only <script> 
    document.getElementById("DIV_ID").innerHTML = 'my new text'; 
</script>