好的,所以这是对您的 JSFiddle 的改造,它可以满足您的要求 - 我没有对其进行广泛的改造,只是足以提供一个工作示例(我将使用最新/最佳实践/模块化代码作为 OP 的练习!):
<style>
.circle {
width:20px;
height:20px;
border-radius:50px;
font-size:12px;
color:#fff;
font-weight:bold;
line-height:20px;
text-align:center;
background:#be1417;
position: absolute;
top: 30px;
left: 17px;
-moz-transition: all 1s; /* Firefox 4 */
-webkit-transition: all 1s; /* Safari and Chrome */
-o-transition: all 1s; /* Opera */
-ms-transition: all 1s; /* IE10+ */
transition: all 1s; /* W3C */
}
</style>
<script>
function checkValue() {
if (document.getElementById("no_items").innerHTML === '0') {
document.querySelector(".circle").style.MozTransform = "scale(0)";
document.querySelector(".circle").style.WebkitTransform = "scale(0)";
document.querySelector(".circle").style.OTransform = "scale(0)";
document.querySelector(".circle").style.msTransform = "scale(0)";
} else {
document.querySelector(".circle").style.MozTransform = "scale(1)";
document.querySelector(".circle").style.WebkitTransform = "scale(1)";
document.querySelector(".circle").style.OTransform = "scale(1)";
document.querySelector(".circle").style.msTransform = "scale(1)";
}
}
function incrementValue() {
var value = parseInt(document.getElementById('no_items').innerHTML, 10);
value = isNaN(value) ? 0 : value;
value++;
document.getElementById('no_items').innerHTML = value;
checkValue();
}
function decrementValue() {
var value = parseInt(document.getElementById('no_items').innerHTML, 10);
value = isNaN(value) ? 0 : value;
(value >= 1) && value--;
document.getElementById('no_items').innerHTML = value;
checkValue();
}
</script>
<div id="circle" class="circle">
<div id="no_items" style="color:white">1</div>
</div>
<input type="button" onclick="incrementValue()" value="Buy Item" />
<input type="button" onclick="decrementValue()" value="Remove Item" />
但是,这不是完全跨浏览器兼容的。
它在最新的 Firefox、Opera、Chrome 和 IE 中运行良好,但对于旧版本,里程会有所不同。
原始脚本中有几个错误:
一般有几点:
从您的 JSFiddle 看起来您想要动画显示/隐藏红色圆圈。我坚持使用您的 scale 方法,但请注意,它可能取决于浏览器,CSS 转换支持哪些 CSS 属性。
我不知道为什么必须在没有 jQuery 的情况下完成此操作,因为它消除了尝试执行此类操作时的许多跨浏览器问题,并且可以很容易地应用可见性/样式更改并为其设置动画。
但是,如果您需要从头开始编写所有内容,那么如果您为可见/隐藏状态创建 CSS 类并使用使用JavaScript 更改元素的类中详述的技术应用它们,将会更好、更灵活——那样你就不用不必在每次想要更改样式时都更改 JS 代码。
祝你好运!