在线急等,能帮忙的,有报酬。
选择(点击checkbox)多个input后,获取相应span值(文件大小值)并且自动相加每一个文件的大小,最后把总大小显示在另一个span里面,然后把单位MB换算为GB。
下面的代码段,我遇到了些技术问题:
1.相加的数字(大小)只能加整数,无法保留两位;
2.转换那里的(input的 id="c")value值无法实时获取相加的总数;
3.在加一段代码,从32G减去已选择文件的总大小,并显示剩余选择的大小,达到32GB后,不能再继续选择。
我写了这些:
<input style="width:0px;height:0px" type="checkbox" value="0" checked>
{loop $tags $i $m}
<p>
<input type="checkbox" name="type[]" value="{$m[title]}" id="type_{$k}"{if $k<0} checked{/if}/>
{$m[title]}
<span style="float:left;font-size:10px;">{$m[filesize]}</span>
</p>
{/loop}
选择的总大小:<span id="all"></span> MB
你已经选择了,
<input type="text" id="c" value="0" onkeyup="calculate_g(this.value)">MB文件,或者
<input type="text" id="f" value="0" onkeyup="calculate_k(this.value)">GB文件。
<script type="text/javascript">
var allinput=document.getElementsByTagName('input');
var all=document.getElementById("all");
function getNextElement(node){
if(node.nextSibling.nodeType == 1){ //判断下一个节点类型为1则是“元素”节点
return node.nextSibling;
}
if(node.nextSibling.nodeType == 3){ //判断下一个节点类型为3则是“文本”节点 ,回调自身函数
return getNextElement(node.nextSibling);
}
return null;
}
for(var i=0;i<allinput.length;i++)
{
if(allinput[i].checked)
{
console.log(allinput[i]);
all.innerHTML+=allinput[i].value;
}
allinput[i].onclick=function()
{
var _this=this;
if(_this.checked==true)
{
console.log(_this);
all.innerHTML =parseInt(all.innerHTML,10)+parseInt(getNextElement(_this).innerHTML,10);
}
else
{
console.log(_this);
all.innerHTML =parseInt(all.innerHTML,10)-parseInt(getNextElement(_this).innerHTML,10);
}
}
};
</script>
<script type="text/javascript">
var kilo=1024;
function calculate_g(val){
document.getElementById("f").value=Math.round(val/(kilo)*1000000)/1000000;
}
function calculate_k(val){
document.getElementById("c").value=Math.round(val*kilo*1000000)/1000000;
};
</script>