如何解决如何用同一脚本生成的HTML内容替换当前脚本标签
| 我想用同一脚本生成的HTML内容替换当前脚本标签。 也就是说,我的页面是 <html>
<body>
<div>
<script src=\"myfile1.js\"></script>
</div>
<div>
<script src=\"myfile1.js\"></script>
</div>
</body>
</html>
在每个.js文件中,会生成相应的html内容。我想把内容作为父div的innerHTML。但由于页面不是静态的,因此无法为父div设置ID。因此,当前的脚本标签必须替换为HTML内容。我怎样才能做到这一点?
对于每个脚本标签,src是相同的。因此无法识别src。这些脚本显示
一些带有文字的图片。脚本相同,但加载时在div中显示不同的内容
请帮我
解决方法
尝试在myfile1.js内部:
var scripts = document.getElementsByTagName( \"script\" );
for ( var i = 0; i < scripts.length; ++ i )
{
if ( scripts[i].src == \"myfile1.js\" )
{
scripts[i].parentNode.innerHTML = \"new content\";
}
}
,对于那些尝试实现JSONP小部件的人来说,这是一个很大的问题。目的是为用户提供尽可能短的代码量。
用户喜欢:
<script type=\"text/javscript\" src=\"widget.js\"></script>
过度:
<script type=\"text/javscript\" src=\"widget.js\"></script>
<div id=\"widget\"></div>
这是如何实现第一个代码段的示例:
TOP OF DOCUMENT<br />
<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js\"></script>
// inside of widget.js
document.write(\'<div id=\"widget\"></div>\');
$(document).ready(function() {
$.getJSON(\'http://test.com?remote_call=1\',function(data) {
$(\'#widget\').html(data);
});
});
<br />BOTTOM OF DOCUMENT
看一下:http://alexmarandon.com/articles/web_widget_jquery/,以了解在脚本中包含库的正确方法。
,不幸的是,正在运行的JavaScript文件无法识别其运行位置。如果您在脚本中使用document.write(),则写函数将在脚本运行的任何地方发生,这是完成所需操作的一种方式,但无需替换内容或对封闭的DIV执行任何操作。
我真的无法设想这样的情况:您对页面的构建会受到如此严格的限制-当然,如果页面是动态的,则可以为DIV元素生成标识符,或者以更传统的方式加载内容?
,为什么不使用Smarty?
http://www.smarty.net/
您可以在Smarty模板中使用javascript,也可以仅使用内置函数。
只需看看http://www.smarty.net/crash_course
,of-旧答案不见了。
根据您的上一次编辑,这是您要执行的操作:
<html>
<head>
<!-- I recommend getting this from Google Ajax Libraries
You don\'t need this,but it makes my answer way shorter -->
<script type=\"text/javascript\" src=\"jquery.js\"></script>
<script type=\"text/javascript\">
$(document).ready(function(){
function getRandomContent(){
// I expect this is the contents of your current script file.
// just package it into a function.
var rnd = Math.random();
return \"[SomeHtml]\";
}
$(\'.random\').each(idx,el){
$(this).html(getRandomHtmlContent());
});
});
</script>
</head>
<body>
<div class=\"random\">
</div>
<div class=\"random\">
</div>
</body>
</html>
,如果您不介意保留脚本标记,则可以使用诸如document.write()之类的简单方法。
myfile1.js:
document.write(\"<p>some html generated inline by script</p>\");
它将完全满足您的需求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。