[编辑:我试图只放置代码的相关部分。我明白这导致了混淆。对此感到抱歉。这里是一个我可以创建的片段,引起了相同的问题。在这里添加片段:]
加载片段后,单击按钮。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="hello">
Some text
<script>
jQuery(document).ready(function () {
func();
});
var a = 5;
function func() {
alert("Value is FIVE. Integer value: " +a);
}
</script>
</div>
<div id="mybtn" style="border: 2px solid black; padding:5px; background-color: yellow; width: 100px">CLICK</div>
<script>
var data = " \
Some text2 \
<script> \
jQuery(document).ready(function () { \
func(); \
}); \
var a = 6; \
function func() { \
alert('Value is SIX. Integer value: ' +a); \
} \
<\/script> ";
$('#mybtn').on('click', function(e) {
$('#hello').html(data);
});
</script>
我期望在点击按钮后看到六个6(或者可能是五个5)。但是却看到了六个5。有趣的是新函数被调用了,但是旧的数值(5)被使用了。在我的实际代码中,我将func()函数放在了调用它的位置下方,并且还在settimeout(func... )中调用了它。我正在尝试理解发生了什么。
script
标签只是在这个示例代码中,对吧...? - benomatisvar1 = 4
,所以为什么会期望它被打印出来呢? - benomatisscript
标签来解决这个问题。如果您能在fiddle中重现这个问题,我很乐意向您展示解决方案。 - Nick Zuber