gpt4 book ai didi

javascript - Flask 应用程序在外部文件中时不执行 javascript

转载 作者:行者123 更新时间:2023-11-28 21:19:53 24 4
gpt4 key购买 nike

我有包含我的 CSS 和 JS 的 HTML 文件。在创建我的 Flask 应用程序时,我决定将 CSS 和 JS 分开,以将静态目录中的文件分开。

当我将所有内容都放在一个 HTML 文件中时,一切都按预期工作,但是当 CSS 和 JS 位于单独的文件中时,部分 JS 不会执行。

这是我在 HTML 文件中的导入:

<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="{{ url_for('static', filename='scripts/main.js') }}"></script>
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.4.2/pure-min.css">
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">
</head>

这是独立 JS 文件的内容:

$('#user_button').click(function(event) {
$("#user_id").html($('option:selected').html());
$('.button_div').show();
});

var prodData = [];
var boughtProds = [];

$('.prod_button').click(function(event) {

if (boughtProds.indexOf($(this).data('name')) == -1) {
prodData.push({
name: $(this).data('name'),
price: $(this).data('price'),
quantity: 1,
});
boughtProds.push($(this).data('name'));
} else {
prodData[boughtProds.indexOf($(this).data('name'))].quantity = prodData[boughtProds.indexOf($(this).data('name'))].quantity + 1;
}

var total = 0;
for (var x in prodData) total += prodData[x].price * prodData[x].quantity
total = Math.round(total * 100) / 100
var subtotal = '<tr><td></td><td>Subtotal</td><td>$' + total + '</td></tr>';

var allProds = '';
$.each(prodData, function(k, v) {
allProds = allProds + '<tr><td>' + v.name + '</td><td>' + v.quantity + 'x</td><td>@ $' + v.price + ' each</td></tr>\n';

});

$('.table_contents > tbody').html(allProds);
$('.table_contents > tfoot').html(subtotal);

});

$(document).ready(
function() {
$('.button_div').hide();
})

奇怪的是这个函数在文档加载时工作正常:

 $(document).ready(
function() {
$('.button_div').hide();
})

并且此功能不起作用:

$('#user_button').click(function(event) {
$("#user_id").html($('option:selected').html());
$('.button_div').show();
});

但更奇怪的是,当所有内容都在一个 HTML 文件中时一切正常。

有什么想法吗?

最佳答案

你要么需要移动<script type="text/javascript" src="{{ url_for('static', filename='scripts/main.js') }}"></script>在你的<head>之外标签(例如,到 <body> 的末尾)或者您需要放置 $('#user_button').click(...);里面$(document).ready(...); .

发生的事情是您的浏览器在处理您的 <head> 时开始加载您的外部脚本文件。标签。一旦文件被加载,浏览器就会执行它,将点击事件绑定(bind)到#user_button。 .这发生在它处理你的 <body> 之前标记,所以 #user_button还不是 DOM 的一部分。

如果您尝试检查 $('#user_button')你会看到它是空的。

console.log($('#user_button'));

这输出

[]

关于javascript - Flask 应用程序在外部文件中时不执行 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23789409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com