Попытка заменить содержимое Div, без удачи - PullRequest
1 голос
/ 24 мая 2010

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

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

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

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

Есть идеи?

ОБНОВЛЕНИЕ: я отметил этот вопрос 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');

Итак, я перепробовал много кода, и это то, что я получил до сих пор, вероятно, не правильно, но я уже некоторое время его взламывал.

Ответы [ 4 ]

2 голосов
/ 24 мая 2010

Вы правы: getElementByID не работает.

Попробуйте getElementById(). Javascript чувствителен к регистру.

0 голосов
/ 24 мая 2010

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

$doc = new DOMDocument();
$doc->validateOnParse = true; 
$doc->loadHTMLFile('<html><body>' . $content . '</body></html>');   
$element = $doc->getElementById('div_to_edit'); 
0 голосов
/ 24 мая 2010

помните, что у вас должна быть действительная веб-страница, а это означает полное 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>
0 голосов
/ 24 мая 2010

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

var myDiv = document.getElementById('content_div');
myDiv.innerHTML = "NEW ALL SORTS HERE";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...