2011-08-06 108 views
0

我遇到了一个非常简单的问题,但由于某种原因,我无法找到解决方案。 正在使用ajax获取页面。在内联匿名元素中输出/写入字符串 - jQuery

的问题是,我有一个JavaScript字符串,我想写信给定元素(不必做一个jQuery选择),例如:

<script type="text/javascript">var myString = "Test";</script> 
<h1><script type="text/javascript">myString</script></h1> 

我试图使用document.write(myString)但它会覆盖整个页面内容。

+0

这段代码会做什么? – ShankarSangoli

回答

1

document.write()可以内嵌在页面而原来的页面加载使用。如果在页面已经加载之后使用它(这是运行ajax调用时发生的情况),它将清除整个页面,然后写入新页面。所以,你不能使用它来修改现有的内容。

加载页面后修改HTML的唯一方法是使用javascript来操作DOM。这几乎总是涉及使用选择器在页面中找到正确的对象进行修改。所以......我不知道你为什么说你想用jQuery select来做到这一点,因为这是正确的做法。

我建议是这样的:

HTML:

<h1 id="viewTitle"></h1> 
<h2 id="viewOutput"></h2> 

的Javascript(从Ajax调用成功处理程序放到页面内容之后运行):

jQuery("#viewTitle").html(jQuery.i18n.prop('view_title')); 
jQuery("#viewOutput").html(jQuery.i18n.prop('view_output')); 
+0

问题是我不想使用选择器:/ –

+0

为什么不使用选择器?这正是他们想要的! – jfriend00

1

它在页面加载时使用document.write可以输出内容:

<div id="asdf" title="Headline 1" name="Headline 2"></div> 

<h1> 
    <script type="text/javascript">document.write($('#asdf').attr('title'));</script> 
</h1> 

<h2> 
    <script type="text/javascript">document.write($('#asdf').attr('name'));</script> 
</h2> 

(注:该代码只使用选择器来获取值写)

演示:http://jsfiddle.net/Guffa/4Cxb3/

如果整个页面被替换,这意味着你正在尝试写的内容时,该页面已完成加载。如果文档不能再写入,它将打开一个新文档来写入。