选择(点击)多个input后,获取相应span值并且自动相加显示在另一个span里面,然后把单位(MB)换算为GB? 20

在线急等,能帮忙的,有报酬。选择(点击checkbox)多个input后,获取相应span值(文件大小值)并且自动相加每一个文件的大小,最后把总大小显示在另一个span里... 在线急等,能帮忙的,有报酬。

选择(点击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>
展开
 我来答
网海1书生
科技发烧友

2020-03-09 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
<script type="text/javascript">
var allinput=document.getElementsByTagName('input');
function getNextElement(node){

var next=node.nextSibling;
return (next.nodeType==1)?next:getNextElement(next);
}
for(var i=0;i<allinput.length;i++){
allinput[i].onclick=function(){
var sum=0;
for(var i=0;i<allinput.length;i++){
if(allinput[i].checked)sum+=getNextElement(allinput[i]).innerHTML;
}
document.getElementById("all").innerHTML=sum.toFixed(2);
document.getElementById("c").value=sum.toFixed(2);
document.getElementById("f").value=(sum/1024).toFixed(6);
}
}
</script>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式