jQuery:用户点击更新随机报价脚本? document.write麻烦

时间:2012-02-05 19:12:44

标签: jquery html dynamic quotes document.write

我正在尝试制作一个覆盖图像上文字的动态引用旋转器。 JS和jQuery都可以正常工作。问题是我希望每次点击一个按钮时都更新,这样用户就不必刷新页面就能看到新的报价。

使用jQuery.text(),. html()或.append()为DIV提供代码后,甚至可以执行document.write吗?它可以逐字打印实际文本,但不会执行< script>。

如果有人有经验或其他建议,不涉及将其变成PHP / MySQL的整个大型AJAX,我会全神贯注。我不是在找任何人写我的代码;只是指出我正确的方向。我有一种压倒性的感觉,这应该比我实现它要容易得多,而且我知道我缺少一些基本和简单的东西。

感谢您阅读,我欢迎您提供任何建议。

编辑/更新:我在下面提供一些基本代码,让您更好地了解我的意思。

<div id="text"></div>

<script src="quotes.js"></script>
$("#text").text('
  <script type="text/javascript">document.write(quote[Math.floor(Math.random()*5)]);&lt;/script&gt;
');

我只是想用quotes.js中的随机引用来更新#text。如果我可以使用它,我可以弄清楚如何用jQuery.click()自己更新它。

4 个答案:

答案 0 :(得分:2)

加载文档后,您无法使用document.write()。这样做会导致整个文档被清除并启动一个新文档。如果要将文本添加到已加载的文档中,则可以使用适当的jQuery方法修改现有元素或添加新元素。

为了帮助您使用确切的代码,我们需要查看您的HTML以及更准确地说明您要添加到其中的内容。

作为一些示例,可以使用.append() jquery方法或使用.html()方法向元素添加对象。

答案 1 :(得分:1)

您可以使用jQuery的htmlappend方法执行script,如果它存在于我们传递的内容中。

看一下这个演示

http://jsfiddle.net/ShankarSangoli/hFgE6/1/

答案 2 :(得分:1)

如果您希望在点击事件后发生DOM更新操作,则只需将点击处理程序附加到该按钮:

$('#your_button').click(function() {
  // Action
  $('#your_element').html('<p>something</p>');
});

请参阅: http://api.jquery.com/click/

答案 3 :(得分:1)

document.write()仅适用于已打开的文档,因此您不应在AJAX中使用它。

如果您想执行JavaScript,只需使用eval()$.getScript()即可。这意味着AJAX响应应该是一个数组(JSON),然后每个元素可以是一个脚本,一个html ...然后你将它们发送到适当的函数。

您将“呈现”的JSON响应示例:

[
  0: {type: 'replace', target: 'div#replaceme', value: '<p>Hello!</p>'},
  1: {type: 'script', target: NULL, value: 'http://example.com/test.js'},
  2: {type: 'append', target: '#result', value: '<p>Item 11</p><p>Item 12</p>'}
]