第一次加载HTML页面时,javascript函数不会运行。但是,如果我进行页面刷新,脚本运行就可以了。
说明:
我的索引页面有一个指向showdata HTML页面的按钮。 问题是,当我单击索引页面中的按钮时,我可以看到(在URL中)加载了showdata.html页面但JS代码没有运行(因为我看不到任何警报)。
但是,如果我刷页面或手动点击URL,JS运行正常,我可以看到警告声明。
在Chrome和Firefox上尝试了这一点,并在两个地方都获得了相同的结果。
如果我没错,$(function()是$(document).ready的简写。无论如何,我尝试使用这两种语法,但结果是相同的。
该页面的当前代码是:
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Test</title>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.js"></script>
<script type="text/javascript">
$(function() { alert("hello"); });
</script>
</head>
<body></body>
</html>
首次加载页面时,我无法看到预期的提示框。当我重新加载页面时,警报按预期进行。
更新:
我清除了缓存但没有结果。
此外,当我删除
<script src="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.js"></script>
来自索引页面的标记,其中存在指向当前页面的链接,JS在showdata.html页面的第一次加载时正确触发。但是,这会导致索引页面中的样式丢失。
答案 0 :(得分:2)
在.get中,确保指定数据类型。通过添加&#34;刷新&#34;到.done,它告诉AJAX要等到成功调用重新加载表后,我相信它会起作用。您可以尝试的另一件事是将</table>
放在正文中,以便始终首先加载HTML表。
<script type="text/javascript">
$(function() {
jQuery.get('filename.txt', function(data) {
var lines = data.split("\n");
var newrow = "";
for (var i = 0, len = lines.length; i < (len-1); i=i+2) {
newrow = "<tr><td>"+lines[i]+"</td>"+"<td>"+lines[i+1]+"</td></tr>";
$('#tableoverview').find('tbody:last').append(newrow);
}
},'text').done(function() {
$("#tableoverview").table("refresh");
});
});
</script>
你也可以试试$(document.body).ready
,直到身体加载后才能执行。{/ p>
<script type="text/javascript">
$(document.body).ready(
$(function() {
jQuery.get('filename.txt', function(data) {
var lines = data.split("\n");
var newrow = "";
for (var i = 0, len = lines.length; i < (len-1); i=i+2) {
newrow = "<tr><td>"+lines[i]+"</td>"+"<td>"+lines[i+1]+"</td></tr>";
$('#tableoverview').find('tbody:last').append(newrow);
}
$("#tableoverview").table("refresh");
});
});
);
</script>
编辑:
我对此进行了一些研究,您似乎正在使用表格小部件和重排表小部件.table("refresh");
的混合。
您是否尝试将其删除并使用.table("reflow");
和<table data-role="table" id="tableoverview" data-mode="reflow" class="ui-responsive table-stroke">
代替?