我有一个简单的JavaScript代码,我不知道为什么它不起作用。代码是:
<!doctype html>
<html>
<head>
<script>
function do_something() {
alert(a);
var theBody = document.getElementsByTagName("body")[0];
var theImg = document.createElement("img");
var a = 1;
var count = 0;
for (var i = 0; i < 10; i++, count++) {
if (i == 5) continue;
if (count == 3) {
count = 0;
a--;
} else {
a++;
}
if (i > 7) break;
}
alert(a);
}
</script>
</head>
<body onload="do_something()">
</body>
</html>
答案 0 :(得分:1)
您的函数do_something()未定义,因为generic:/ $ ifconfig
lo Link encap:UNSPEC
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope: Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:248 TX bytes:248
eth0 Link encap:UNSPEC
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::5054:ff:fe12:3456/64 Scope: Link
inet6 addr: fec0::5054:ff:fe12:3456/64 Scope: Site
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:110 TX bytes:316
generic:/ $ ping 10.0.2.15
PING 10.0.2.15 (10.0.2.15) 56(84) bytes of data.
64 bytes from 10.0.2.15: icmp_seq=1 ttl=64 time=10.8 ms
^C
--- 10.0.2.15 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 31ms
rtt min/avg/max/mdev = 10.829/10.829/10.829/0.000 ms
generic:/ $ ping 10.0.2.2
connect: Network is unreachable
generic:/ $ ping 10.0.2.1
connect: Network is unreachable
generic:/ $ ping 8.8.8.8
connect: Network is unreachable
和var a=1
之后函数中的某些非法字符会替换为';'
您还需要在使用之前初始化a,否则将给出a--
undefined
答案 1 :(得分:0)
您在定义它之前使用'a'。变量声明被提升,但“a”最初没有赋值。
答案 2 :(得分:0)
将函数直接放在div,tag或其他内容之后:
<!doctype html>
<html>
<head>
<script>
function do_something() {
alert(a);
var theBody = document.getElementsByTagName("body")[0];
var theImg = document.createElement("img");
var a = 1;
var count = 0;
for (var i = 0; i < 10; i++, count++) {
if (i == 5) continue;
if (count == 3) {
count = 0;
a--;
} else {
a++;
}
if (i > 7) break;
}
alert(a);
}
</script>
</head>
<body>
<script type="text/javascript">
do_something();
</script>
</body>
</html>
答案 3 :(得分:0)
这是事实:
1)它在当地完美运作。
2)在jsfiddle中,你必须从javascript中删除onload选项。之后,它会正常工作。因为它创建了两个onload函数调用,它会产生错误。
/ - &GT;请在定义之前删除'a'的警告。
答案 4 :(得分:-1)
您正在尝试在声明<!doctype html>
<html>
<head>
<script>
function do_something() {
var theBody = document.getElementsByTagName("body")[0];
var theImg = document.createElement("img");
var a = 1;
alert(a);
var count = 0;
for (var i = 0; i < 10; i++, count++) {
if (i == 5) continue;
if (count == 3) {
count = 0;
a--;
} else {
a++;
}
if (i > 7) break;
}
alert(a);
}
</script>
</head>
<body onload="do_something()">
</body>
</html>
之前提醒其值。因此,您将收到a
错误。
检查下面的代码段。它会在第二个警报中提醒undefined
的值。
a