Javascript 如何在脚本中具有多个scr属性

Javascript 如何在脚本中具有多个scr属性,javascript,html,element,Javascript,Html,Element,我们正在使用flask和jinja生成一些html,最后我们在html中的两个不同位置寻找jquery,一部分在python视图中生成并传递,另一部分来自模板 一个脚本元素在table元素/标记内,另一个脚本元素在body内 如果主体中的一个未注释,我们会得到错误“SCRIPT438:Object不支持属性或方法'tablesorter'”,我想这是因为包含类的表在上面?可能就像python一样,函数需要首先存在于上面,这样我们才能使用它。 因为如果我把它移到身体的顶部,不管它是否重复,一切都会

我们正在使用flask和jinja生成一些html,最后我们在html中的两个不同位置寻找jquery,一部分在python视图中生成并传递,另一部分来自模板

一个脚本元素在table元素/标记内,另一个脚本元素在body内

如果主体中的一个未注释,我们会得到错误“SCRIPT438:Object不支持属性或方法'tablesorter'”,我想这是因为包含类的表在上面?可能就像python一样,函数需要首先存在于上面,这样我们才能使用它。 因为如果我把它移到身体的顶部,不管它是否重复,一切都会起作用。 有没有一种方法可以告诉html将脚本用于表中的所有内容

是否有类似的技巧可以指定要使用的脚本的路径?或者库要使用的元素

当一个网站使用两个不同版本的jquery或其他库时会发生什么

谢谢你们,我很感谢你们的帮助

例如:

<body>
<!--if is at the top of the body also everything works-->
<!--<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>-->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Bootstrap -->
    <link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/static/favicon.ico" type="image/x-icon">

<div class="container-fluid">
    <div class="page-header"> <h1>PRESENTATION</h1> </div>

    <div class="row">
        <div class="col-sm-12">
            <table class="table table-striped table-condensed tablesorter" id="total_table">
            <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
            <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.29.2/js/jquery.tablesorter.js">                    </script>
            <script>
                $(document).ready(function()
                {
                   $('#total_table')
                   .tablesorter({
                       ignoreCase: false,
                       widthFixed: true,
                       sortResetKey: 'ctrlKey',
                       headerTemplate : '{icon}{content}',
                       theme : "bootstrap",
                       }
                   )
                });
            </script>
            <thead>
                <tr>
                    <th>
                        <p>
                            my values
                        </p>
                    </th>
                </tr>
                </thead>
                <tbody>
                <tr>
                    <td>
                        <p>
                            17
                        </p>
                    </td>
                </tr>
                <tr>
                    <td>
                        <p>
                            10
                        </p>
                    </td>
                </tr>
                <tr>
                    <td>
                        <p>
                            5
                        </p>
                    </td>
                </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>





    <!--if i comment next line website works and i can sort the table-->
    <!--but if i have it here doesnt work =(-->
    <!--how can i have it in 2 places? or tell the first one just to affect that table or div?-->
<!--<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>-->

<script>
    $(document).ready(function() {
        console.log("this function is working")
    });
</script>

</div>
</body>

演示
$(文档).ready(函数()
{
$(“#总计表”)
表排序器({
ignoreCase:false,
是的,
sortResetKey:“ctrlKey”,
headerTemplate:“{icon}{content}”,
主题:“引导”,
}
)
});

我的价值观

17

10

5.

$(文档).ready(函数(){ log(“此功能正在工作”) });
使用jQuery.noConflict,可以使多个版本的jQuery共存于同一页面上。比如说

<script src='jquery-1.3.2.js'></script>
<script>
var jq132 = jQuery.noConflict();
</script>
<script src='jquery-1.4.2.js'></script>
<script>
var jq142 = jQuery.noConflict();
</script>

var jq132=jQuery.noConflict();
var jq142=jQuery.noConflict();

从编写有效的HTML开始。脚本元素不允许是表元素的子元素。您有三个jQuery脚本标记-去掉其中的两个。取消注释最终jQuery脚本include时出现tablesorter错误的原因是,包含了jQuery,然后tablesorter运行并将自身实例化为jQuery插件,然后再次包含jQuery,这会清除插件缓存并重新启动。所以,当任何东西试图使用tablesorter时,它都不知道它是什么。只要有一个jqueryinclude,它们都是相同的版本。确保TableSorterInclude在jQueryInclude之后。对于这个示例,我确实使它们具有相同的版本,但对于其他方面,团队的其他成员使用的是版本1。如果我从表中删除jquery,只保留底部的一个,我会得到SCRIPT5009:“jquery”是未定义的=(是的,这正是应该发生的事情。正如我前面所说的,请确保tablesorter include位于jQuery include.did之后。我将带有jQuery 3.2.1的脚本放在底部的表之外,正好放在tablesorter之后。我得到了$(文档)上未定义的“$”。就绪(函数(){line…我认为没有加载jquery,它们是我现在唯一的一个。但是如果我在调用jquery后移动保持表排序器的控件,并且scr表排序器可以工作,我想你可以在任何地方都可以,因为已经准备好了文档,这意味着将首先加载所有内容,然后运行不相关的函数-尽管OP询问您如何处理不同的版本,但您在问题代码中的版本都是相同的。