当我点击HTML页面上的图片时,我想做2个动作。 这两个动作是:
这是我的HTML代码的一部分:
2.feature
这是我的javascript代码的部分:
1.feature
考虑到我有很多照片,每张照片需要一个功能吗?
其他问题,例如,我在我的picture1上点击一次;我屏幕上的图片是<div class="col c1-11">
<p><a onclick="return toggle(this);" data-on="/trigger/2" data-off="/trigger/3" href="/trigger/3"><img src="images/mur1/V_1_OFF.png" /></a></p>
</div>
<div class="col c1-11">
<p><a onclick="return toggle1(this)" data-on="/trigger/4" data-off="/trigger/5" href="/trigger/5"><img src="images/mur1/V_2_OFF.png"></a></p>
</div>
,没问题。
但是如果我离开我的页面并且我再次来到这个页面,它会重新加载,默认情况下,图片是function toggle(element)
{
var onLink = element.getAttribute('data-on');
var offLink = element.getAttribute('data-off');
if (element.getAttribute("href") == offLink){
element.setAttribute("href", onLink); //It works
element.getElementsByTagName('img')[0].src = "images/mur1/V_1_ON.png";
} else if (element.getAttribute("href") == onLink){
element.setAttribute("href", offLink); //It works
element.getElementsByTagName('img')[0].src = "images/mur1/V_1_OFF.png";
}
return false;
}
function toggle1(element)
{
var onLink = element.getAttribute('data-on');
var offLink = element.getAttribute('data-off');
if (element.getAttribute("href") == offLink){
element.setAttribute("href", onLink); //It works
element.getElementsByTagName('img')[0].src = "images/mur1/V_2_ON.png";
} else if (element.getAttribute("href") == onLink){
element.setAttribute("href", offLink); //It works
element.getElementsByTagName('img')[0].src = "images/mur1/V_2_OFF.png";
}
return false;
}
,就像在我的html代码中一样。如何在屏幕上保留"images/mur1/V_1_ON.png"
?
显然,即使我更改了html页面,我也必须保存<img src="images/mur1/V_1_OFF.png" />
的状态。
你知道我该怎么办?
答案 0 :(得分:0)
那是因为你没有选择img。您实际上是在尝试更改元素上img
的属性。
你会想要这样的东西,虽然我还没有测试过它:
element.getElementsByTagName('img').setAttribute("src", "images/mur1/V_1_ON.png");
<强>更新强>
首先,您的img
没有结束标记。其次,您的点击事件没有返回任何内容,也就是说您没有停止href
的默认行为
您需要将html更改为:
<div class="col c1-11">
<p><a id="btn1" onclick="return toggle(this);" data-on="/trigger/2" data-off="/trigger/3" href="/trigger/3"><img src="images/mur1/V_1_OFF.png" /></a></p>
</div>
<div class="col c1-11">
<p><a id="btn1" onclick="return toggle(this);" data-on="/trigger/4" data-off="/trigger/5" href="/trigger/5"><img src="images/mur1/V_2_OFF.png" /></a></p>
</div>
你的js:
function toggle(element)
{
var onLink = element.getAttribute('data-on');
var offLink = element.getAttribute('data-off');
if (element.getAttribute("href") == offLink){
element.setAttribute("href", onLink); //It works
element.getElementsByTagName('img')[0].src = "images/mur1/V_1_OFF.png";
} else if (element.getAttribute("href") == onLink){
element.setAttribute("href", offLink); //It works
element.getElementsByTagName('img')[0].src = "images/mur1/V_1_ON.png";
}
return false;
}
我有kaf
的建议getElementsByTagName
返回一个数组,因此使用[0]
选择第一个返回的元素。在这种情况下,img,如果您添加了任何新元素,则需要更新[0]
或编写更好的函数来检测img
中的href
。 / p>
我已经返回false并使href
将函数返回到click事件。因此,它不会遵循原始的return false;
目标。如果您希望按照href
ListObject
行
这是项目工作的一个小提琴: https://jsfiddle.net/ogzpozxt/
答案 1 :(得分:0)
试试这个(注意:你的html中有两个具有相同id(btn1
)的元素):
element.getElementsByTagName('img')[0].src = "images/mur1/V_1_OFF.png";
您的代码就像
function toggle(element)
{
var onLink = element.getAttribute('data-on');
var offLink = element.getAttribute('data-off');
if (element.getAttribute("href") == offLink){
element.setAttribute("href", onLink); //It works
//Get the image into a variable and then set src attribute
var img = element.getElementsByTagName('img')[0];
img.src = "images/mur1/V_1_OFF.png";
} else if (element.getAttribute("href") == onLink){
element.setAttribute("href", offLink); //It works
//Same as above in a single line
element.getElementsByTagName('img')[0].src = "images/mur1/V_1_ON.png";
}
}