Etiqueta Posted July 6, 2012 at 03:00 PM Report Share #467706 Posted July 6, 2012 at 03:00 PM Boa tarde, desenvolvi uma tabela com alguns inputs. O que pretendo é somar numa div os valores inseridos nessas inputs. O que está a acontecer é que está a juntá-los em vez de somar. Aqui fica parte do código php: echo "<script type='text/javascript' src='JS/somaGlobal.js'></script>"; echo "<tr>"; echo "<td colspan='5' align='center'>Total de Horas</td>"; echo "<td><input name='tHNormais' type='text' id='tHNormais' placeholder='Soma' style='width: 104px;' onclick='SomaGlobal()'/></td>"; echo "<td><input name='tHTurno' type='text' id='tHTurno' placeholder='Soma' style='width: 104px;' onclick='SomaGlobal()'/></td>"; echo "<td><input name='tFeriados' type='text' id='tFeriados' placeholder='Soma' style='width: 104px;' onclick='SomaGlobal()'/></td>"; echo "<td><input name='tFaltas' type='text' id='tFaltas' placeholder='Soma' style='width: 104px;' onclick='SomaGlobal()'/></td>"; echo "<tr>"; echo "<tr>"; echo "<td colspan='5' align='right'>Total Global</td>"; echo "<td><div id='totalGlobal'><input name='totalGlobal' type='text' id='totalGlobal' placeholder='Soma' style='width: 104px;'/></div></td>";// echo "<tr>"; e o código em javascript: function SomaGlobal() { var theForm = document.forms["f_criarRegistoH"]; var tHNormais = theForm.elements["tHNormais"]; var tHTurno = theForm.elements["tHTurno"]; var tFeriados = theForm.elements["tFeriados"]; var tFaltas = theForm.elements["tFaltas"]; var SomaG =0; SomaG = tHNormais.value + tHTurno.value + tFeriados.value + tFaltas.value; var divobj = document.getElementById('totalGlobal'); divobj.style.display='block'; divobj.innerHTML =SomaG; } function hideTotal() { var divobj = document.getElementById('totalGlobal'); divobj.style.display='none'; } alguém me pode ajudar? Obrigada Facebook: https://www.facebook.com/DeArteaZ Blog: http://arte-a-z.blogspot.com Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 6, 2012 at 03:06 PM Report Share #467709 Posted July 6, 2012 at 03:06 PM o value dos elementos DOM que estás a manipular são textos, mesmo que esses textos contenham informação que poderá ser interprstada como números. para fazer a adição corretamente, necessitas de dizer ao javascript para fazer essa interpretação SomaG = parseFloat(tHNormais.value) + parseFloat(tHTurno.value) + parseFloat(tFeriados.value) + parseFloat(tFaltas.value); IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Etiqueta Posted July 6, 2012 at 03:38 PM Author Report Share #467712 Posted July 6, 2012 at 03:38 PM assim não apresenta resultado nenhum Facebook: https://www.facebook.com/DeArteaZ Blog: http://arte-a-z.blogspot.com Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 6, 2012 at 03:56 PM Report Share #467716 Posted July 6, 2012 at 03:56 PM provavelmente ocorreu algum problema na conversão. o problema pode ser que poderás ter o caracter ',' como separador das unidades. no javascript deverás usar o '.'. podes sempre fazer um replace .... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Etiqueta Posted July 6, 2012 at 04:27 PM Author Report Share #467726 Posted July 6, 2012 at 04:27 PM (edited) quando clico na primeira input para inserir o valor que quero, aparece logo na div da soma isto "NaN" já consegui assim: SomaG = (tHNormais.value*1) + (tHTurno.value*1) + (tFeriados.value*1) + (tFaltas.value*1); Obrigada pela ajuda Edited July 6, 2012 at 04:27 PM by Etiqueta Facebook: https://www.facebook.com/DeArteaZ Blog: http://arte-a-z.blogspot.com Link to comment Share on other sites More sharing options...
brunoais Posted July 6, 2012 at 04:36 PM Report Share #467732 Posted July 6, 2012 at 04:36 PM Aconselho-te a começares por não usar maneiras consideradas deprecated para manipular o DOM. document.form está classificada como deprecated. Usa um dos getElement(s)By Uma string vazia é um NaN. Tens que arranjar maneira de nunca teres uma string vazia nos inputs. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 6, 2012 at 04:41 PM Report Share #467735 Posted July 6, 2012 at 04:41 PM já experimentaste colocar valores estranhos nas caixas ? - caracter(es) - separador ',' em vez do '.' ?? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Etiqueta Posted July 9, 2012 at 01:53 PM Author Report Share #468037 Posted July 9, 2012 at 01:53 PM sim já experimentei. Fica o campo NaN como o @brunoais referiu. só aceita números inteiros, o que pretendia era que aceita-se horas no formato (16:45). É possivel? Facebook: https://www.facebook.com/DeArteaZ Blog: http://arte-a-z.blogspot.com Link to comment Share on other sites More sharing options...
brunoais Posted July 10, 2012 at 07:01 PM Report Share #468228 Posted July 10, 2012 at 07:01 PM Para isso precisas de tratar como texto e depois traduzes como precisares. Podes sempre usar isto para coisas mais complicadas: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/ Ou então usares código teu. Podes tb separar a hora e os minutos para 2 variáveis usando o split. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%. Link to comment Share on other sites More sharing options...
Etiqueta Posted July 11, 2012 at 01:36 PM Author Report Share #468348 Posted July 11, 2012 at 01:36 PM também fiz com split mas coloquei as horas em valores décimais e já soma exactamente com o mesmo javascript que vos mostrei. Obrigada pela ajuda Facebook: https://www.facebook.com/DeArteaZ Blog: http://arte-a-z.blogspot.com Link to comment Share on other sites More sharing options...
Etiqueta Posted July 11, 2012 at 02:17 PM Author Report Share #468363 Posted July 11, 2012 at 02:17 PM mais uma questão sobre este assunto eu tenho este php para gerar campos dinamicamente consoantes as datas que foram geradas. for ($contador = $_GET['diaInicio']; $contador <= $limite; $contador++) { $currentData = $_GET['anoInicio'] . '-' . $_GET['mesInicio'] . '-' . $contador; $mes = mesToString($_GET['mesInicio']); $fraseParaODia = diaSemanal($currentData); echo "<tr style='text-align: center;'>"; echo "<td style='width: 104px;'>"; echo $contador .'-'. $mes; echo "</td>"; echo "<td style='width: 104px;'>"; echo $fraseParaODia; echo "</td>"; $inicio = strip_tags(trim($_GET['HEntrada'])); $fim = strip_tags(trim($_GET['HSaida'])); $intervalo = strip_tags(trim($_GET['Intervalo'])); //calcular horas normais $a = HorasDecimaisNormal(); //calcular horas turno $b = HorasDecimaisTurno(); echo "<td style='width: 104px;'><input name='HEntrada$contador' type='text' id='HEntrada' placeholder='Entrada' style='width: 104px; text-align: center;' value='$inicio'/></td>"; echo "<td style='width: 104px;'><input name='Intervalo$contador' type='text' id='Intervalo' placeholder='Intervalo' style='width: 104px; text-align: center;' value='$intervalo'/></td>"; echo "<td style='width: 104px;'><input name='HSaida$contador' type='text' id='HSaida' placeholder='Saída' style='width: 104px; text-align: center;' value='$fim'/></td>"; echo "<td style='width: 104px;'><input name='HoraNormal$contador' type='text' id='HoraNormal' placeholder='Normal' style='width: 104px; text-align: center;' onclick='SomatHNormais()' value='$a'/></td>";//<div id='HoraNormal$contador'></div> echo "<td style='width: 104px;'><input name='HoraTurno$contador' type='text' id='HoraTurno' placeholder='Turno' style='width: 104px; text-align: center;' value='$b'/></td>"; echo "<td style='width: 104px;'><input name='NumHorasFeriado$contador' type='text' id='NumHorasFeriado' placeholder='Feriado' style='width: 104px; text-align: center;' /></td>"; echo "<td style='width: 104px;'><input name='NumHorasFalta$contador' type='text' id='NumHorasFalta' placeholder='Faltas' style='width: 104px; text-align: center;'/></td>"; echo "</tr>"; em que o campo HEntrada tem uma função do javascript "onclick='SomatHNormais()' " aqui fica a função em javascript function SomatHNormais() { var theForm = document.forms["f_criarRegistoH"]; var HNormal = theForm.elements["HNormal"]; var limite = theForm.elements["limite"]; var SomaHN =0; var divobj = document.getElementById('tHNormais'); for (var contador = 0; contador <= limite; contador++) { contador = HNormal.value*1; } divobj.style.display='block'; divobj.innerHTML =SomaHN; } no javascript vai fazer as contas e gerar o resultado para a div "tHNormais"o limite do m Limite é o número limite do mês, ou seja, 28/29/30/31 no php criei essa div echo "<td><div id='tHNormais' style='text-align: center;' ></div></td>"; o que pretendo é fazer a soma de todos os valores HNormais que são gerados dinamicamente e aparesentar o resultado na div. podem ajudar-me? Facebook: https://www.facebook.com/DeArteaZ Blog: http://arte-a-z.blogspot.com Link to comment Share on other sites More sharing options...
some Posted July 27, 2012 at 10:05 AM Report Share #470613 Posted July 27, 2012 at 10:05 AM (edited) mais uma questão sobre este assunto eu tenho este php para gerar campos dinamicamente consoantes as datas que foram geradas. for ($contador = $_GET['diaInicio']; $contador <= $limite; $contador++) { $currentData = $_GET['anoInicio'] . '-' . $_GET['mesInicio'] . '-' . $contador; $mes = mesToString($_GET['mesInicio']); $fraseParaODia = diaSemanal($currentData); echo "<tr style='text-align: center;'>"; echo "<td style='width: 104px;'>"; echo $contador .'-'. $mes; echo "</td>"; echo "<td style='width: 104px;'>"; echo $fraseParaODia; echo "</td>"; $inicio = strip_tags(trim($_GET['HEntrada'])); $fim = strip_tags(trim($_GET['HSaida'])); $intervalo = strip_tags(trim($_GET['Intervalo'])); //calcular horas normais $a = HorasDecimaisNormal(); //calcular horas turno $b = HorasDecimaisTurno(); echo "<td style='width: 104px;'><input name='HEntrada$contador' type='text' id='HEntrada' placeholder='Entrada' style='width: 104px; text-align: center;' value='$inicio'/></td>"; echo "<td style='width: 104px;'><input name='Intervalo$contador' type='text' id='Intervalo' placeholder='Intervalo' style='width: 104px; text-align: center;' value='$intervalo'/></td>"; echo "<td style='width: 104px;'><input name='HSaida$contador' type='text' id='HSaida' placeholder='Saída' style='width: 104px; text-align: center;' value='$fim'/></td>"; echo "<td style='width: 104px;'><input name='HoraNormal$contador' type='text' id='HoraNormal' placeholder='Normal' style='width: 104px; text-align: center;' onclick='SomatHNormais()' value='$a'/></td>";//<div id='HoraNormal$contador'></div> echo "<td style='width: 104px;'><input name='HoraTurno$contador' type='text' id='HoraTurno' placeholder='Turno' style='width: 104px; text-align: center;' value='$b'/></td>"; echo "<td style='width: 104px;'><input name='NumHorasFeriado$contador' type='text' id='NumHorasFeriado' placeholder='Feriado' style='width: 104px; text-align: center;' /></td>"; echo "<td style='width: 104px;'><input name='NumHorasFalta$contador' type='text' id='NumHorasFalta' placeholder='Faltas' style='width: 104px; text-align: center;'/></td>"; echo "</tr>"; em que o campo HEntrada tem uma função do javascript "onclick='SomatHNormais()' " aqui fica a função em javascript function SomatHNormais() { var theForm = document.forms["f_criarRegistoH"]; var HNormal = theForm.elements["HNormal"]; var limite = theForm.elements["limite"]; var SomaHN =0; var divobj = document.getElementById('tHNormais'); for (var contador = 0; contador <= limite; contador++) { contador = HNormal.value*1; } divobj.style.display='block'; divobj.innerHTML =SomaHN; } no javascript vai fazer as contas e gerar o resultado para a div "tHNormais"o limite do m Limite é o número limite do mês, ou seja, 28/29/30/31 no php criei essa div echo "<td><div id='tHNormais' style='text-align: center;' ></div></td>"; o que pretendo é fazer a soma de todos os valores HNormais que são gerados dinamicamente e aparesentar o resultado na div. podem ajudar-me? Será isto que queres fazer ????: <html> <form name="meu_form"> <input type="text" name="HNormal1" value="10"><br> <input type="text" name="HNormal2" value="10"><br> <input type="text" name="HNormal3" value="10"><br> <input type="text" name="HNormal4" value="10"><br> </form> <div id="tHNormais" style="text-align:left;" ></div> <script type="text/javascript"> var form = document.forms['meu_form']; var value = 0; for( var i=0; i < form.elements.length; i++ ) { var element = form.elements.item(i); var elementName = element.name.substring(0,7); if( elementName == 'HNormal' ) { value += parseInt(element.value); } } document.getElementById('tHNormais').innerHTML = value; </script> </html> Edited July 28, 2012 at 10:57 AM by brunoais tags code + geshi Link to comment Share on other sites More sharing options...
brunoais Posted July 28, 2012 at 10:56 AM Report Share #470783 Posted July 28, 2012 at 10:56 AM (edited) @some O teu código tem erros graves de sintaxe. Faltam-lhe tags (head, body, etc...) form não tem um @action. Segues muito mal as regras de programação de js (usas regras do js 1.6, já vamos no 1.8.5 ou 1.8, dependendo do browser) devias de rever isso... BTW, meti-lhe as tags code. Edited July 28, 2012 at 10:56 AM by brunoais "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now