2010-05-24 2 views
1

Ive попытался использовать модель Dom без кровавой удачи, getElementByID просто не работает для меня.Попытка заменить содержимое Div, без везения

Мне жаль прибегать к регулярному выражению, но не знаю, что еще делать.

Идея состоит в том, чтобы заменить <div id="content_div"> all sorts </div> на новый <div id="content_div"> NEW ALL SORTS HERE </div> и сохранить все, что было до или после него в строке.

Строка является частичной строкой HTML и, более конкретно, из Wordpress Posts DB.

Любые идеи?

ОБНОВЛЕНИЕ: Я отметил этот вопрос PHP, но, вероятно, должен упоминаться, что я ищу только PHP-решение.

Update: Пример кода

$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 пытался кучу кода, и это то, что получил Ive до сих пор, вероятно, не правильно, но Ive был взлом на него некоторое время теперь.

+0

Вам нужен правильный DTD или XSD, связанный с документом для того, чтобы использовать 'getElementById' - это ваш главный документ имеет Doctype? Дополнительно, как вы в настоящее время создаете и пытаетесь заменить элемент? – prodigitalson

+0

Можете ли вы уточнить, что «getElementByID просто не работает для меня». ? он должен это делать. или вы можете использовать библиотеку javascript, такую ​​как прототип или jquery, для упрощения доступа к DOM. – oedo

+0

document.getElementById у вас есть опечатка с getElementById –

ответ

0

хорошо я предполагаю, что $content отрывок? то это может быть все, что вам нужно:

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

это фрагмент, поэтому в вашем примере, как бы я смог заменить div div_to_edit другим div, а затем сохранить HTML? – bluedaniel

-1

Попробуйте это ..

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

Я думаю, что он использует DOMDocument php на стороне сервера ... не javascript. – prodigitalson

+0

Я ищу PHP-ответ, я пометил его PHP, но я, вероятно, должен упомянуть об этом, а также извините. – bluedaniel

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>
Смежные вопросы