2011-12-14 2 views
0

Я использую следующий HTML структуру:Очистить текст внутри DIV

<div id="clock">5:30 AM 
    <div id="day">Wednesday 
    </div> 
    <div id="date">14 December 
    </div> 
</div> 

Я обновить содержание этих элементов с помощью Javascript. Для «дня» и «даты» я использую $("#day").text(day) и $("#date").text(date). Поскольку «clock» является родительским элементом, мне пришлось использовать $("#clock").prepend(clock), чтобы успешно добавить текст.

Проблема с последней функцией заключается в том, что новый текст добавляется каждый раз, когда часы обновляются, т. Е. Формирует список часов. Для первых двух функций текст просто заменяется, как и должно. Есть ли способ сделать это для функции «часы»?

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

Я также создал jsFiddle: http://jsfiddle.net/KeyMs92/NZtFA/ Я оставил список вещей здания (досадно)!

Кстати, я не слишком уверен, что если function(); setInterval('function()', 1000) это лучший способ освежить, так что если вам что-то лучше, я был бы рад знать :)

+0

Вы используете jquery, не так ли? –

+0

Можем ли мы увидеть ваш код JS, пожалуйста? –

+0

Что такое «часы», которые добавляются? Не могли бы вы добавить демо на http://jsfiddle.net? –

ответ

2

Что вам нужно сделать, это изменить структуру вашего html на это.

<div id="wrapper"> 
    <div id="clock"></div> 
    <div id="day"></div> 
    <div id="date"></div> 
</div> 

Тогда для JavaScript

$('#clock').text('12:45'); 
$('#day').text('Wednesday'); 
$('#date').text('12/14/2011'); 

Таким образом, вы можете просто изменить/обновить текст часов вместо предваряя значения к нему.

Другой подход, с вашим текущим html, который я не рекомендую.

<div id="clock"> 
    <div id="day"> 
    </div> 
    <div id="date"> 
    </div> 
</div> 

, ИС

$('#clock').contents().get(0).nodeValue = '12:45'; 
$('#day').text('Wednesday'); 
$('#date').text('12/14/2011'); 
+0

Спасибо, рад, что вы поняли вопрос :) Будет обновлять мой пост, чтобы он стал более понятным. Второй подход, о котором вы упоминаете, кажется, так же хорош, как и в моей текущей структуре html. Я думаю, вы правы, что мне больше нравится элемент «часы» как дочерний элемент. Причина, по которой я выбрал ее в качестве родительского элемента, заключалась в том, что я мог бы установить положение дня и даты и стиль, зависящие от часов, но это можно легко решить с помощью отдельной оболочки. – Daan

1

Если у вас есть HTML

<div id="clock"> 
    <div id="day"></div> 
    <div id="date"></div> 
</div> 

Тогда вам не нужно изменять #clock. Делая $("#day").text(day) и $("#date").text(date), содержимое этих разделов изменяется, и вам не нужно прикасаться к #clock.

Но в случае, если вы хотите заменить содержимое элемента, используйте .html(newContent). См. documentation.

+0

Часы - это текущее время, которое я предполагаю, что он освежает. Если он делает '$ ('# clock'). Html (..)', то он заменит «день» и «дату», который, вероятно, не предназначен. –

+0

@ Interstellar_Coder Он не понимал, что такое '# clock' (или я слепой?) /, Так что я просто догадывался в ответе. Я не предлагаю использовать '.html()' в случае, если часы - это время, конечно. Я только что показал, как заменить содержимое элемента * ЕСЛИ он ему нужен :). – kubetz

+1

dz справедливо, более подробная информация была бы лучше. –

0

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

0

Что вы имеете в виду

Потому что "часы" является родительский элемент я должен был использовать $ ("# часы"). Перед именем (часы), чтобы успешно добавить текст. ?

Это кажется излишним.Поскольку $ ('# day') и $ ('# date') однозначно адресуют ваши целевые элементы.

Мой совет:

Не используйте clock. $("#day").text(day) и $("#date").text(date) уже обновляют номера внутри вашего элемента #clock.

0

Hy, мое внимание к вашей проблемы, если вы решили манипулировать содержание #clock DIV вы могли бы просто сделать это:

var newContent="";//in here comes whatever you want to add to your clock div 
$('#clock').html($('#clock').html()+newContent); 

Вот так я использую его большую часть времени, но вы также можете сделать это:

var curContent=$('#clock').html(); 
curContent+="<>put in your code to add</>"; 
$('#clock').html(curContent); 

Это я думаю, немного медленнее, чем первый, но это работает.

+0

Он хочет обновить содержимое всех трех div, а не добавлять старый контент к новому. –

+0

О, ладно, спасибо, пропустили это. –

Смежные вопросы