2013-09-16 2 views
0

Почему этот код выводит 4, а весь другой контент не выводится?Почему этот код jquery скрывает мои абзацы

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <title>jQuery</title> 
    <script src="jquery-1.9.1.js"></script> 
    <script> 
    $(document).ready(function() { 
     var par = $("p"); 
     document.write(par.length); 
    }); 
    </script> 
</head> 

<body> 
    <p>I am one</p> 
    <p>I am two</p> 
    <p>I am three</p> 
    <p>I am four</p> 
</body> 

</html> 
+0

Не используйте 'document.write'. В 99% это зло. Создайте 'div' и положите' par.length' в качестве своего 'text()' вместо – zerkms

+0

, так что в чем причина и альтернатива? –

+1

'$ ('# result'). Text (par.length);' и '

' в теле – zerkms

ответ

3

когда document.write вызывается после того, как документ готов, он удаляет все содержимое из документа, так как он вызывает document.open, который стирает все содержимое

выглядит так, как вы хотите, чтобы просто добавьте par.length к телу

$(document).ready(function() { 

    var par = $("p"); 
    $('body').append(par.length); 

}); 
0

Вы исполнил свой сценарий, когда документ будет готов - хорошо. Но document.write() будет писать непосредственно в exisitng документ, заменяя то, что там, поэтому ваши абзацы исчезают.

Поскольку вы используете JQuery вы могли бы сделать лучше, чтобы иметь JQuery добавить деталь для вас:

$("body").append("<p>Paragraph count:"+$("p").length+"</p>"); 
0

Создайте еще один тег внутри тела.

<div id="plength"></div> 

Затем добавьте код, как показано ниже

$(document).ready(function() { 
    var par = $("p"); 
    $('#plength').text(par.length); 
}); 

Запуск примера здесь http://jsfiddle.net/rajeshmepco/Bk6bZ/

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