对两个图像使用一个函数
Using one function for two images
考虑以下标记
<div class="like-buttons">
<img src="up.png" onclick="onClick()" />
<span id="clicks">0</span>
<img src="down.png" onclick="onClick()" />
</div>
和下面的JavaScript函数
<script type="text/javascript">
var clicks = 0;
function onClick() {
if (clicks < 10) {
clicks += 1;
document.getElementById("clicks").innerHTML = clicks;
} else {
document.getElementById("clicks").innerHTML = clicks;
}
};
</script>
现在,我试图实现的是,当单击Up
图像时,计数增加1,最大值为10,而当单击down
时,计数减少1,不应低于0。目前计数在上升,但我想知道有没有一种方法可以为同一函数中的每个图像添加一个事件,或者我必须为每个图像编写两个单独的函数?
提前感谢您的帮助
用param调用onClick((函数,例如onClick(1((表示向上按钮(和onClick((-1(表示向下按钮。
function onClick(value) {
var clicks = parseInt(document.getElementById("clicks").innerHTML);
clicks += value;
if (clicks > 10)
clicks = 10;
if (clicks < 0)
clicks = 0;
document.getElementById("clicks").innerHTML = clicks;
}
<div class="like-buttons">
<img src="up.png" onclick="onClick(plus)" />
<span id="clicks">0</span>
<img src="down.png" onclick="onClick(min)" />
</div>
<script type="text/javascript">
var clicks = parseInt(document.getElementById("clicks").innerHTML);
function onClick(type){
if (type=='plus' && clicks < 10) {
clicks += 1;
document.getElementById("clicks").innerHTML = clicks;
} else {
if (clicks > 0) clicks -= 1;
document.getElementById("clicks").innerHTML = clicks;
}
};
var clicks = 0;
function onClick(element) {
var imge = element.src;
if (clicks < 10 && imge.indexOf('up.png') != -1) {
clicks++;
} else if(clicks >0 && imge.indexOf('down.png') != -1) {
clicks--;
}
document.getElementById("clicks").innerHTML = clicks;
};
<div class="like-buttons">
<img src="up.png" onclick="onClick(this)" />
<span id="clicks">0</span>
<img src="down.png" onclick="onClick(this)" />
</div>
向@bhushans添加逻辑以完成要求。当单击Up图像时,计数增加1,最大值为10;当单击down时,计数减少1,不应低于0。
小提琴
<div class="like-buttons">
<img src="up.png" onclick="onClick(true)" /> <span id="clicks">0</span>
<img src="down.png" onclick="onClick(false)" />
</div>
js应该是
var clicks = 0;
function onClick(flag) {
if (flag) {
if (clicks < 10) {
clicks += 1;
} }else{
if (clicks > 0) {
clicks -= 1;
}
}
document.getElementById("clicks").innerHTML = clicks;
}
您可以使用与两个图像的事件处理程序相同的函数。只需检查event
对象的id
就可以检查是加还是减。
示例代码段:
var result = 0,
img1 = document.getElementById('i1'),
img2 = document.getElementById('i2'),
span = document.getElementById('clicks');
img1.addEventListener('click', calc);
img2.addEventListener('click', calc);
function calc(e) {
var img = e.target;
result = img.id == 'i1' ? (result+1) : (result-1);
result = result < 0 ? 0 : result > 10 ? 10 : result;
span.textContent = result;
}
img { cursor: pointer; margin: 5px; vertical-align: middle; }
<div class="like-buttons">
<img id='i1' src="//placehold.it/32x32?text=Up" title="Up" />
<span id="clicks">0</span>
<img id='i2' src="//placehold.it/32x32/?text=Dn" title="Down" />
</div>
你可以试试这个:正如Johan所评论的,传递flag。标志可以是真/假或向上/向下,也可以是您想要的任何东西,它将标识单击的按钮(向上或向下(。
参见以下代码
var clicks = 0;
function onClick(flag) {
if(flag && clicks < 10)
clicks += 1;
else if(!flag && clicks > 0)
clicks -= 1;
document.getElementById("clicks").innerHTML = clicks;
};
<div class="like-buttons">
<img src="up.png" onclick="onClick(true)" />
<span id="clicks">0</span>
<img src="down.png" onclick="onClick(false)" />
</div>
看看这个片段是否是更好的解决方案,以便获得多个图像和相同的结果。我还为-1 添加了一个0控件
$(document).ready(function(){
$('.up').click(function() {
var clicks = parseInt($(this).parent().find('.clicks').html());
clicks = clicks +1
if(clicks == 10) {
$(this).hide();
}
$(this).parent().find('.clicks').html(clicks);
});
$('.down').click(function() {
var clicks = parseInt($(this).parent().find('.clicks').html());
if(clicks > 0) {
clicks = clicks - 1
}
if(clicks < 10) {
$(this).parent().find('.up').show()
}
$(this).parent().find('.clicks').html(clicks);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="like-buttons">
<button type="button" class="up">+1</button>
<span class="clicks">0</span>
<button type="button" class="down">-1</button>
</div>
<div class="like-buttons2">
<button type="button" class="up">+1</button>
<span class="clicks">0</span>
<button type="button" class="down">-1</button>
</div>
相关文章:
- 我可以在json对象中添加一个函数吗
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在另一个函数中使用变量this
- 在另一个函数成功结束后调用该函数
- mongoose.connect undefined不是一个函数
- 监听器必须是一个函数
- 使用JS函数来使用另一个函数的语法?node.js
- 如何取消object.prototypes javascript的一个函数
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 嵌套到另一个函数中的Fancybox函数;不起作用
- 如何在javascript中使用不止一个函数
- jQuery-在页面加载时执行一个函数
- jquery UI draggable:UI.children不是一个函数
- jQuery Mobile Undefined不是一个函数
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- JS异常:animate不是一个函数
- 如何将一个函数附加到一个不存在的元素上
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟