2012-08-31 19 views
5

Mam podstawowe quastion. Czy mogę dołączyć kod HTMl do JS? (Z "document.write")zawierają kod HTML w js

To jest mój kod HTML:

<li><a href="#" class="menulink">text</a></li> 
<li><a href="#" class="menulink">text</a> </li> 
<li><a href="#" class="menulink">text</a> 
    <ul> 

     <li> 
      <a href="#" class="sub">text</a> 
      <ul > 
       <li class="topline"><a href="#">text</a></li> 
       <li><#">text </a></li> 
       <li><a href="#">text</a></li> 
       <li><a href="#">text</a></li> 
       <li><a href="#">text</a></li> 
       <li><a href="#"text</a></li> 
       <li><a href="#">text</a></li> 

      </ul> 
     </li> 
     <li> 
      <a href="#" class="sub">text </a> 
      <ul> 
       <li class="topline"><a href="#">text</a></li> 
       <li><a href="#">text</a></li> 



    </ul> 
</li> 

    <li> 
        <a href="#" class="sub"> text </a></li> 
      <li> 
        <a href="#" class="sub"> text </a></li> 
      </ul> 
     </li> 

      <li> 
    <a href="#" class="menulink">text</a> 


</li> 
<li><a href="#" class="menulink">text</a> 

i chcę, aby umieścić go w ten JS kod

window.onload = function() { 
    document.getElementById("menu").innerHTML=""; 

podłączyć go przez ten kod:

<p id="dropdown_menu"></p> 

Jak mogę to zrobić?

pełny kod jest tutajhttp://jsfiddle.net/tsnave/eSgWj/4/ dzięki ..

+0

Zmieniłem kod ... błagamy, pomóżcie mi ... –

Odpowiedz

2
document.getElementById("menu").innerHTML=' 
    <li class="topline"><a href="#">some text</a></li> 
    <li><a href="#">some text </a></li> 
    <li><a href="#">some text</a></li> 
    <li><a href="#">some text</a></li> 
    <li><a href="#"some text</a></li> 
    <li><a href="#">some text</a></li> 
    <li><a href="#">some text</a></li> 
'; 

All I rzeczywiście było przełączyć cytaty do apostrofami tak atrybuty HTML Nie zadzieraj ciąg w górę. Jeśli chcesz umieścić pojedyncze cudzysłowy w ciągu znaków innerHtml, możesz uciec z nich z odwrotnym ukośnikiem, tj .: innerHtml = ' Don\'t break me';

+0

Próbowałem tego ... Doeasnt pracy .. dlaczego? –

+0

Co nie działa? czy masz błędy? – Dunhamzzz

+0

nie ... nie mogę zobaczyć tekstu w przeglądarce ... –

2

można zrobić:

document.getElementById("menu").innerHTML="<div>hello</div>" 
9

mogę zawierać kod HTML w JS?

Jeśli przez to rozumiesz, możesz wyprowadzać HTML przez javascript, wtedy odpowiedź brzmi tak, np.

window.onload = function() { 
    document.getElementById("menu").innerHTML = '<li class="topline"><a href="#">some text</a></li> 
       <li><a href="#">some text </a></li> 
       <li><a href="#">some text</a></li> 
       <li><a href="#">some text</a></li> 
       <li><a href="#"some text</a></li> 
       <li><a href="#">some text</a></li> 
       <li><a href="#">some text</a></li>'; 
} 
0
window.onload = function(){ 
    document.getElementById("menu").innerHTML='<li class="topline"><a href="#">some text</a></li><li><a href="#">some text </a></li><li><a href="#">some text</a></li><li><a href="#">some text</a></li><li><a href="#"some text</a></li><li><a href="#">some text</a></li><li><a href="#">some text</a></li>'; 
} 

Zmieniano:

To powinno działać.

<script type="text/javascript"> 
window.onload = function(){ 
    document.body.innerHTML = 
     '<li><a href="#" class="menulink">text</a></li>' 
     +'<li><a href="#" class="menulink">text</a></li>' 
     +'<li><a href="#" class="menulink">text</a><ul>' 
     +'<li><a href="#" class="sub">text</a><ul>' 
     +'<li class="topline"><a href="#">text</a></li>' 
     +'<li><a href="#">text </a></li><li><a href="#">text</a></li>' 
     +'<li><a href="#">text</a></li><li><a href="#">text</a></li>' 
     +'<li><a href="#"text</a></li><li><a href="#">text</a></li></ul>' 
     +'</li><li><a href="#" class="sub">text </a><ul>' 
     +'<li class="topline"><a href="#">text</a></li>' 
     +'<li><a href="#">text</a></li></ul></li>' 
     +'<li><a href="#" class="sub">text</a></li>' 
     +'<li><a href="#" class="sub">text</a></li>' 
     +'</ul></li><li><a href="#" class="menulink">text</a></li>' 
     +'<li><a href="#" class="menulink">text</a>'; 

} 

+1

Wycofałem edycję, ponieważ JS nie obsługuje linebreaków w łańcuchach. – Florent

+0

cześć. Dziękuję Ci! Zmieniam powyższy kod, a teraz twoje rozwiązanie nie działa ... czy możesz mi pomóc? –

+1

upewnij się, że istnieje element html z id = "menu" i uruchom ten kod po załadowaniu strony, zmodyfikowany odpowiedź spróbuj, powinno działać. –

7

Inny sposób to zrobić jest umieszczenie HTML wewnątrz tagu skryptu:

<script type="text/template" id="myHtml"> 
    <li class="topline"><a href="#">some text</a></li> 
    <li><a href="#">some text </a></li> 
    <li><a href="#">some text</a></li> 
    <li><a href="#">some text</a></li> 
    <li><a href="#"some text</a></li> 
    <li><a href="#">some text</a></li> 
    <li><a href="#">some text</a></li> 
</script> 

Następnie można je dostać w JavaScript z wykorzystaniem

var myHtml = document.getElementById('myHtml').innerHTML; 

lub używając jednej z kilku bibliotek, które ci w tym pomogą. Kod wewnątrz znacznika skryptu o numerze type="text/template" nie zostanie zinterpretowany ani wyświetlony przez przeglądarkę. Zaletą tego podejścia w stosunku do umieszczania go w łańcuchu znaków w JavaScript jest to, że pozwala on nadal traktować go jak zwykły kod HTML w edytorze i zachowuje czystość Javascript. Zobacz także this post by John Resig.