1

我正在尝试制作一个在图像上覆盖文本的小动态引用旋转器。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

4 回答 4

2

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

为了帮助您获得准确的代码,我们需要查看您的 HTML 以及更完整的描述,说明您要添加的内容。

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

于 2012-02-05T19:15:43.310 回答
1

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

看看这个演示

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

于 2012-02-05T19:18:18.737 回答
1

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

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

见: http ://api.jquery.com/click/

于 2012-02-05T19:18:51.787 回答
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>'}
]
于 2012-02-05T19:20:00.920 回答