2013-08-22 3 views
0
<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>css demo</title> 
</head> 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script> 
    (function(){ 
     var html = '<p>'; 
      html += 'Hello World'; 
      html += '</p>'; 

     $(document.body).innerHTML = html; 
     //document.body.innerHTML = html; 
    }) 
</script> 
<body> 
</body> 
</html> 

$ (document.body) .innerHTML = html; // jQuery тоже не работает. document.body.innerHTML = html; // обычный JS, пытающийся запросить DOM, тоже не работает.innerHTML не работает ни в одном браузере

В чем проблема? Я знаю, что при использовании jQuery нам не нужно использовать innerHTML, чтобы добавить HTML-вещь, просто пыталась и изучала ее.

ответ

7

вам нужно, чтобы получить Dóm элемент, $(document.body) возвращающую JQuery завернутые элемент, который не имеет innerHTML свойство

$(document.body).get(0).innerHTML = html; 

или простой

document.body.innerHTML = html; 

с помощью JQuery

$('body').html(html) 

также похоже, что анонимная функция не является привело

(function(){ 
    var html = '<p>'; 
    html += 'Hello World'; 
    html += '</p>'; 

    document.body.innerHTML = html; 
})() 

, если вам нужно ждать йот готового тогда

jQuery(function($){ 
    var html = '<p>'; 
    html += 'Hello World'; 
    html += '</p>'; 

    $('body').html(html) 
}) 
1
(function(){ 
     var html = '<p>'; 
      html += 'Hello World'; 
      html += '</p>'; 

     $("body").html(html); 
     //document.body.innerHTML = html; 
    }) 
+1

Вы должны выполнить эту функцию. – jcubic

2

Как просто, как вы можете сделать с html() является

$('body').html(html); 

Working demo

2

Используйтефункция JQuery:

Этот метод использует браузера innerHTML свойство. Некоторые браузеры могут не возвращать HTML, который точно реплицирует источник HTML в оригинальном документе . Например, Internet Explorer иногда оставляет за кадром значения атрибутов значения , если они содержат только буквенно-цифровые символы .

var html = '<p>'; 
html += 'Hello World'; 
html += '</p>'; 

$(document.body).html(html); 

Живой пример: http://jsfiddle.net/YTaRG/

1

фактически браузер запустить сценарий, прежде чем загружен.Вы должны установить таймер или добавить onDomReady событие

1

Поскольку вы используете JQuery, вы можете сделать это так, как JQuery:

$(function(){ 
    var html = '<p>'; 
      html += 'Hello World'; 
      html += '</p>'; 

     $('body').html(html); 

}); 

JSFiddle

1

Вы забыли одну вещь:

(function(){ 
}); 

Это не сработает, вы должны сделать:

$(function() {  
    //... 
    //and then... 
    $('body').html(html); 
}); 

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

$(document.body)[0].innerHTML = html; 
1

Do как этого

<script> 
    $(document).ready(function(){ 
    var html = '<p>'; 
     html += 'Hello World'; 
     html += '</p>'; 

    $('body').html(html); 
    }) 
</script> 
1

изменение $(document.body).innerHTML = html; к $(document.body).html(html); который является правильным способом сделать это с помощью JQuery.

или

изменение $(document.body).innerHTML = html; к $(document.body)[0].innerHTML = html;, если вы не хотите использовать html() метод.

0

Это прямоприменяемая функция не совсем верно, вам нужно изменить последнюю строку:

})(); 

Но как только вы исправить это, потому что сценарий перед тегом открытия тела, он работает до того, как тело было построено в DOM. Если вы посмотрите консоль, вы увидите исключение типа «Невозможно установить свойство« innerHTML »из null». Перемещение сценария в тело исправит это.

Так вот родная версия JS:

<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>css demo</title> 
</head> 
<body> 
    <script> 
     (function(){ 
      var html = '<p>'; 
       html += 'Hello World'; 
       html += '</p>'; 
      document.body.innerHTML = html; 
     })(); 
    </script> 
</body> 
</html> 

А потом вот версия JQuery:

<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>css demo</title> 
</head> 
<body> 
      <script src="jquery.js"></script> 
    <script> 
     (function(){ 
      var html = '<p>'; 
       html += 'Hello World'; 
       html += '</p>'; 
      $('body').html(html); 
     })(); 
    </script> 
</body> 
</html> 
Смежные вопросы