Javascript首先执行,然后加载正文中的文本 为什么在我的浏览器中,当我第一次运行它时,我的java脚本文件会运行,然后它会加载正文中的文本,但当我在stackoverflow javascript代码段工具中运行它时,它运行得很好。
Javascript首先执行,然后加载正文中的文本 为什么在我的浏览器中,当我第一次运行它时,我的java脚本文件会运行,然后它会加载正文中的文本,但当我在stackoverflow javascript代码段工具中运行它时,它运行得很好。,javascript,html,Javascript,Html,var name=prompt(“输入您的姓名”); 变量年龄=提示(“输入您的年龄”); var pet_name=提示(“输入您最喜欢的宠物名称”); 提醒(“你好”+姓名+“你的年龄是”+年龄+“你爱”+宠物名); 日志(“嗨”+名字+“你的年龄是”+年龄+“你爱”+宠物名) 测试javascript 测试我的第一个java脚本 看起来您的代码执行得很好,所以我能想到的唯一结论是脚本标记没有正确实现 验证它的名称确实是“test_1.js”,并且它与html所在的文件位于同一位置 如果不
var name=prompt(“输入您的姓名”);
变量年龄=提示(“输入您的年龄”);
var pet_name=提示(“输入您最喜欢的宠物名称”);
提醒(“你好”+姓名+“你的年龄是”+年龄+“你爱”+宠物名);
日志(“嗨”+名字+“你的年龄是”+年龄+“你爱”+宠物名)代码>
测试javascript
测试我的第一个java脚本
看起来您的代码执行得很好,所以我能想到的唯一结论是脚本标记没有正确实现
验证它的名称确实是“test_1.js”,并且它与html所在的文件位于同一位置
如果不是,您可以使用
其他几点:
javascript类型是冗余的,因为javascript是web的默认脚本语言
年龄变量和“love”字符串后缺少空格
我希望这会有所帮助:)我认为这是因为警报、确认和提示都是“阻止”功能,它们在渲染发生的同时被调用,请尝试将代码放入setTimeout或document ready中:
document.addEventListener("DOMContentLoaded", function(event) {
// your code
});
或
对话框是模态窗口;它们阻止用户访问程序界面的其余部分,直到对话框关闭
该行为特定于浏览器。在呈现页面之前,特定浏览器可能会等待页面输入流的结尾:可能位于文件结尾附近的定位元素仍需要呈现在页面顶部
现在,javascript中的弹出对话框,如警报
、确认
和提示
对脚本具有同步阻止操作,可以暂停HTML解析,直到它们得到响应。因此,像Chrome这样的浏览器在页面输入完成后才会呈现,在提示被应答或取消之前不会显示脚本块上方的文本
像Firefox这样递增呈现页面的浏览器可能会显示脚本块上方的文本
SO中的代码段功能的工作方式不同。它处理HTML框中的内容,将其放入输出窗格,然后处理脚本面板中的内容。因此,HTML内容首先出现
需要等待窗口“加载”或文档“DOMContentLoaded”事件的代码段未使用代码段工具进行正确测试
页面呈现后使用弹出对话框的一般解决方案是(如前所述)延迟处理相关代码,直到在文档或“加载”上触发“DOMContentLoaded”事件在窗口上。在
元素之前的文档中呈现
元素它对堆栈溢出不起作用…jsiddle显示问题:您是否尝试了延迟
:使用了延迟仍然是相同的问题它只在第一次对代码段起作用。这个答案在那方面是不正确的point@SC87更改了js文件名并重试,并尝试了您提到的所有空格,但仍然相同problem@ChinmayaRanjanBiswal到底是什么问题,你还需要更改h4标签吗?@ChinmayaRanjanBiswal我刚刚在一个实时环境中看到了你的代码,并意识到了这个问题。您可以尝试将其包装到自己的函数中,并使用jQuery使用documentready调用它。函数myFunction(){var name=prompt(“输入你的名字”);var age=prompt(“输入你的年龄”);var pet_name=prompt(“输入你最喜欢的宠物的名字”);alert(“hi”+name+“你的年龄是”+age+“你爱”+pet_name”);console.log(“hi”+name+“你的年龄是”+age+“你爱”+pet_name);}$(document).ready(function(){myFunction();});第一个代码不起作用,但在手动将代码放入延迟脚本后,它起作用了
var delayedScript = function() {
// your code
}
setTimeout(delayedScript, 500);