如何触发此功能:
<script>
function change(x) {
var target = document.getElementById("target");
if (y == "imgA") {target.className = "cast1";}
else if (y == "imgB") {target.className = "cast2";}
else if (y == "imgC") {target.className = "cast3";}
else if (y == "imgD") {target.className = "cast4";}
else {target.className = "chart";}
}
function changeReset() {
var target = document.getElementById("target");
target.className = "chart";
}
</script>
仅在按下此按钮时才会发生?
<div class='nfooter' style="position:float;"><a id="c_question" href="#"><img src="../name_footer/_name.png" /></a></div>
答案 0 :(得分:1)
将onclick="change()"
添加到元素中。
编辑:
function change(x) {
if(x=="something"){
var target = document.getElementById("target");
if (y == "imgA") {target.className = "cast1";}
else if (y == "imgB") {target.className = "cast2";}
else if (y == "imgC") {target.className = "cast3";}
else if (y == "imgD") {target.className = "cast4";}
else {target.className = "chart";}
}
}
或者,如果您只想在特定元素调用时允许函数执行,则可以检查元素。 this
引用将引用拥有该函数的元素。
function change(x) {
if(this.id == "target")
var target = document.getElementById("target");
if (y == "imgA") {target.className = "cast1";}
else if (y == "imgB") {target.className = "cast2";}
else if (y == "imgC") {target.className = "cast3";}
else if (y == "imgD") {target.className = "cast4";}
else {target.className = "chart";}
}
}
EDIT2:
通常你会使用element.onclick
进行绑定,但是当使用内联声明时,this
引用会引用窗口。
此处详细信息http://www.quirksmode.org/js/this.html
如果没有太多更改代码,您可以按照以下建议稍微更改您的功能。
function change(element,x) {
if(element.id=="target"){
var target = document.getElementById("target");
if (y == "imgA") {target.className = "cast1";}
else if (y == "imgB") {target.className = "cast2";}
else if (y == "imgC") {target.className = "cast3";}
else if (y == "imgD") {target.className = "cast4";}
else {target.className = "chart";}
}
}
然后更改内联onclick以传递对元素的引用。 onclick="change(this,'target')"
一般来说,使用内联onclick声明被认为是不好的做法。所以考虑在脚本中进行点击绑定。
答案 1 :(得分:1)
在函数定义和函数调用中添加另一个参数对象&#39;这个&#39; 并通过id检查函数定义,object.id是你所希望的。你得到了逻辑。