2012-12-09 5 views
4
<p>hello</p> 
<script type="text/javascript"> 
document.write("<!--"); 
</script> 
<p>world</p> 
<script type="text/javascript"> 
document.write("-->"); 
</script> 
<p>nihao</p> 

Je pensais que la sortie de ce morceau de code HTML estPourquoi document.write ("->") ne fonctionne pas comme prévu?

hello 
nihao 

Mais il se trouve comme ci-dessous:

hello 
"); 
nihao 

Comment dois-je obtenir ce que je pensais? Quel est le problème ici?

+2

Quelle est la sortie? (full HTML) – Swadq

+3

Je ne peux pas vous donner une raison rationnelle pourquoi cela ne fonctionne pas, mais cela semble si * faux * –

Répondre

7

Eh bien, le premier élément JavaScript est exécuté ce qui conduit à une représentation comme ceci:

<p>hello</p> 
<!-- 
<p>world</p> 
<script type="text/javascript"> 
document.write("-->"); 
</script> 
<p>nihao</p> 

Ainsi, le commentaire HTML vous commencez venez d'ajouter envergures dans votre élément suivant JavaScript et la sortie résultante est juste comme vous l'avez . Pour répondre à votre deuxième question, qu'est-ce qui ne va pas avec ce qui suit?

<p>hello</p> 
<script type="text/javascript"> 
document.write("<!--<p>world</p>-->"); 
</script> 
<p>nihao</p> 
5

Il est parce que le <!-- dans votre javascript est analysé comme le début d'un commentaire avant l'exécution JavaScript.

+1

Mais son problème n'est-il pas * pas * analysé comme le début d'un commentaire? –

+0

Je pense que ce intentionnel. – Jivings

+2

Cette réponse est maintenant logique :) Désolé. – Jivings

2

Pour obtenir le résultat que vous attendez exactement:

<p>hello</p> 
<script id="ahh" type="text/javascript"> 
document.write("<!"+"--"+"<p>world<p>--"+">"); 
document.getElementById('ahh').remove() 
</script> 
<p>nihao</p>​ 

de toute façon, il est assez mauvaise idée.

4

Il y a eu quelques réponses utiles, mais si vous voulez vraiment créer un commentaire et l'insérer dans votre document, vous devez utiliser la createComment() function: Sortie

var comment = document.createComment("This is a comment") 
​document.appendChild(comment);​ 

Will:

<!--This is a comment--> 
Questions connexes