如何用同一脚本生成的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>\");
它将完全满足您的需求。