8

支持我有这个隐藏字段:

<input type='hidden' id='handler' name='handler' value='5534882394' />

想象一下,我通过 jQuery AJAX 从服务器获取一个 HTML 片段。

<div id='result'>
    <span></span>
</div>

但是,不要写这样的东西:

$(function(){
   $('#result span').text($('#handler').val());
});

我想使用类似的东西:

<div id='result'>
    <span>javascript:$('#handler').val();</span>
</div>

但是,我没有得到预期的结果。我可以在 JavaScript 中使用这种方法吗?

更新:请大家,我知道$(document).ready();。所以,不要提供更好的方法。我只是想知道是否可以使用内联 JavaScript,如果可以,如何?

4

5 回答 5

14

不,您不能在 Javascript 中使用这种方法。没有内联 Javascript 之类的东西。

您在链接中看到的<a href="javascript:alert(1)">javascript:伪协议,类似于http:协议的使用。当您将浏览器指向这样的 URL 时,浏览器会运行该脚本。

如果要在页面中运行脚本,则需要一个脚本标签。

于 2011-08-13T13:12:09.737 回答
6

你可以做 -

<input type="text" id="handler" value="yes"/>
<div id='result'>
    <span>
       <script>document.write($('#handler').val());</script>
    </span>
</div>

并且页面在遇到脚本标签时会运行 Javascript。您必须确保“#handler”元素已经加载,否则脚本将失败。

一般来说,最好将诸如此类的脚本标签远离您的标记。

工作演示 - http://jsfiddle.net/ipr101/h6zXs/

于 2011-08-13T13:07:45.280 回答
6

虽然<script>标签有效并且可以让你做你想做的事,但我真的建议你在那里重新考虑你的设计。这不是您所说的“不显眼的 Javascript”。

为什么你更喜欢混合 HTML 和 JS?如果是出于好奇 - 好的,但如果这是为了将其转换为生产代码,那么您可能希望尽可能多地将两者分开。最终,您将获得更好的可维护性。

于 2011-08-13T13:11:00.590 回答
3

你忘<script>标签吗?

<div id="result"></div>
<script>$('#result').text($('#handler').val();</script>
于 2011-08-13T13:05:45.543 回答
2

几年前,我遇到了那个确切的问题:我使用 AJAX 来检索 HTML,而 HTML 已经嵌入了 Javascript。我从来没有找到比手动解析 HTML 以挖掘 Javascript 标记并调用eval其内容更好的解决方案。笨拙且不可靠,但这是我能找到的最好的。

于 2011-08-13T14:27:06.643 回答