这真的吓坏了我。
我正在尝试使用JavaScript关键字单击时更改图像的源属性。
虽然我观看过的一些视频确实对我有帮助,但使用的方法实在令人困惑。
请亲们体验一下民众应该向我解释一下。
<html>
<head>
<script>
var image_tracker = 'p';
function change() {
var image = document.getElementById('pics');
if (image_tracker == 'p') {
image.src = 'Tulips.jpg';
image_tracker = 't';
} else {
image.src = 'Penguins.jpg';
image_tracker = 'p';
}
}
</script>
<title></title>
</head>
<body>
<h1>JavaScript Tutorial</h1>
<img src="Penguins.jpg" alt="pics" id="demo" onclick="change();">
</body>
</html>
我的实际困惑是,无法在函数内声明跟踪器变量吗?
我实际上尝试在函数内声明它并且它不起作用。
请好心人,告诉我我不知道的事。
我的实际困惑是为什么我不能在函数内声明变量跟踪器?
请不要介意代码,我的困惑只是变量声明
答案 0 :(得分:3)
您声明变量外部函数以保留下一个函数调用的值。
如果你在函数内声明它,它的值将在下一个函数调用时重置:
var trigger1 = 'f';
function testTrigger() {
var trigger2 = 'f';
console.log('Trigger 1: ' + trigger1 + ' | Trigger 2: ' + trigger2);
if (trigger1 == 't') {
trigger1 = 'f';
trigger2 = 'f';
} else {
trigger1 = 't';
trigger2 = 't';
}
}
testTrigger();
testTrigger();
testTrigger();
testTrigger();
&#13;
答案 1 :(得分:1)
首先,添加一个函数名称。
至于为什么声明函数内部的变量不起作用,这是因为如果你这样做,每次调用函数时,变量将被重置为其原始值,即t
in你的情况。由于您希望此值在多个函数调用中保持不变,因此您需要某种方法将此值存储在某处,以便在下次调用函数时获取最后存储的值。
您可以在函数内定义变量而不使用关键字var
。这将使其全球化。我不确定这是解决问题的最佳方法,但这样可行。
function change() {
tracker = 't';
var image = document.getElementById('img');
if (tracker == 't') {
image.src = 'photo.jpg';
tracker = 'f';
} else {
image.src = 'picture.jpg';
tracker = 't';
}
}
如果您想避免将tracker
作为全局变量,则另一种方法可能是将值保存为data
标记本身的img
属性。因此,每次运行函数时,首先获取属性值,相应地执行代码,然后将新更新的值保存在属性中。
<img data-tracker="t" src="Penguins.jpg" alt="pics" id="demo" onclick="change();">
function change() {
var image = document.getElementById('img');
var tracker = image.getAttribute("data-tracker");
if (tracker == 't') {
image.src = 'photo.jpg';
// tracker = 'f';
image.setAttribute("data-tracker", "f");
} else {
image.src = 'picture.jpg';
// tracker = 't';
image.setAttribute("data-tracker", "t");
}
}
答案 2 :(得分:-1)
如果您在内部定义它,那么每次运行该功能时,&#39;跟踪器&#39;将是init