aramis
Abril 9, 2009, 9:39am
#1
Pessoal,
fiz essa função em java script
ela recebe a matriculá por parâmetro e dar a média da ponderada em um no campo me1+matricula
function Me1(mat){
alert(mat);
campo_atual1=document.getElementById(“mp1” +mat);
campo_atual2=document.getElementById(“mc1” +mat);
var me1 = eval(campo_atual1) * eval(form1.p1.value);
var me12= eval(campo_atual2) * eval(form1.p2.value);
met1 =(me1+me12)/100;
campo_media=document.getElementById(“me1” +mat);
campo_media.value =met1;
}
chamo assim
<td bgcolor="#B4CDCD "><input name=“mp1<?=$cont?>” onkeyup=‘Me1("<?=$mat?>")’ id =“mp1<?=$mat?>” type=“text” value="<?=$mp1?>" size=“1” maxlength=“4” />
<td bgcolor="#B4CDCD "><input name=“mc1<?=$cont?>” onkeyup=‘Me1("<?=$mat?>")’ id =“mc1<?=$mat?>” type=“text” value="<?=$mc1?>" size=“1” maxlength=“4” />
<td bgcolor="#B4CDCD "><input name =“me1<?=$cont?>” value ="<?=$me1?>" id=“me1<?=$mat?>” size=“1” maxlength=“4” />
mas não acontece nada só aparece um NAN! alguma sugestão ?? alguma luz ??
obs: só gostaria de informar que o campo mp1 e o mc1 já recebem valores automaticamente 9que são médias mp1+matricula = média processual1 e mc1+matricula = média cógnitiva1)
desde já agradeço
Substitua o eval() por Math.abs(). Mas os valores devem ser no padrão americano de números, como 3.2, 5.7… Separando os decimais com ponto e não com virgula… Se voce estiver usando virgula como separador, faça um replace antes.
aramis
Abril 9, 2009, 9:51am
#3
cara fiz assim
unction Me1(mat){
alert(mat);
campo_atual1=document.getElementById(“mp1” +mat);
campo_atual2=document.getElementById(“mc1” +mat);
me1 = Math.abs(campo_atual1) * Math.abs(form1.p1.value);
me12= Math.abs(campo_atual2) * Math.abs(form1.p2.value);
met1 =Math.abs(me1+me12)/100; // e também coloquei aqui sem o Math.abs
campo_media=document.getElementById(“me1” +mat);
campo_media.value=met1;
}
não funcionou ainda parace o NAN
ALGUMA sugestão ??
agradeço muito sua ajuda !!
Passa alguns exemplos de possiveis valores para as variaveis:
campo_atual1
campo_atual2
form1.p1.value
form1.p2.value
aramis
Abril 9, 2009, 9:57am
#5
campo_atual1 = 10
campo_atual12 =10
form1.p1.value =50
form1.p2.value =50
+ou - isso
Demorei pra ver isso:
campo_atual1 e 2 são os elementos HTML e não o valor deles:
me1 = Math.abs(campo_atual1.value) * Math.abs(form1.p1.value);
me12= Math.abs(campo_atual2.value) * Math.abs(form1.p2.value);
aramis
Abril 9, 2009, 10:17am
#7
sim mas o valor deles são esse que lhe informei !
acho que não entendi !!
o document.getElementById() retorna o elemento HTML, pra você pegar o valor dele, tem que usar o atributo value.
var campo = document.getElementById("campo");
var valor = campo.value;
ou
var valor = document.getElementById("campo").value;
aramis
Abril 9, 2009, 10:52am
#9
cara deu certo !!!
fiz assim
function Me1(mat){
alert(mat);
campo_atual1=document.getElementById(“mp1” +mat).value;
campo_atual2=document.getElementById(“mc1” +mat).value;
peso_atual=document.getElementById(“p1”).value;
peso_atual2=document.getElementById(“p2”).value;
me1 = Math.abs(campo_atual1) * Math.abs(peso_atual);
me12= Math.abs(campo_atual2) * Math.abs(peso_atual2);
met1 =Math.abs(me1+me12)/100;
campo_media=document.getElementById(“me1” +mat);
campo_media.value=met1;
}
só um pro ! é o seguinte
quando chamo a função usando onblur da certo ! mas quando chamo usando onkeyup não faz nada ??
Da uma olhada nesse site . Tem varios exemplos e é facil de navegar nele
aramis
Abril 9, 2009, 1:30pm
#11
cara já olhei
será que com onkeyup não funciona pq is campo mp1 e mc1 ja recebem valores que já foram gerados automaticamente ?? por um onkeyup ??
O evento onkeyup acontece quando o usuário solta uma tecla no campo. Exemplo:
Existe um input text em tela com: onkeyup=“alert(‘soltou’)”
O usuario aperta e segura a tecla ‘a’, escrevendo ‘aaaaaaaaaa…’ no campo.
Assim que ele soltar o ‘a’, vai aparecer o ‘soltou’ em tela.
aramis
Abril 9, 2009, 1:42pm
#13
blz cara ! então é isso !!
agora seguinte fiz essa função ai !
funciona só que o engraçado é que tipo o meu contador vai de 21 ate 24 no máximo !
mas a função só começa a funcionar quando coloco o valor do campo 23 !!! não entendo pq isso ??
cara você ta me ajudando muito valeu mesmo !
function Mc2(mat) {
cont2=0;
valor2=0;
for (i=21;i<=24;i++){
campo_atual=document.getElementById("av" +mat+ i);
if (campo_atual.value!=""){
valor2+=parseInt(campo_atual.
value);
cont2++;
}
campo_media=document.getElementById("mc2" +mat);
campo_media.value =valor2/cont2;
}
}
<td bgcolor="#B4CDCD"><input name="av21<?=$cont?>" id ="av<?=$mat?>21" type="text" value=" <?=$av21?>" size="1" maxlength="4" onkeyup= ' Mc2("<?=$mat?>")' onKeyPress="return OnlyEspeciais(this,event);" />
<td bgcolor="#B4CDCD"><input name="av22<?=$cont?>" id ="av<?=$mat?>22" type="text" value=" <?=$av22?>" size="1" maxlength="4" onkeyup= ' Mc2("<?=$mat?>")' onKeyPress="return OnlyEspeciais(this,event);" />
<td bgcolor="#B4CDCD"><input name="av23<?=$cont?>" id ="av<?=$mat?>23" type="text" value=" <?=$av23?>" size="1" maxlength="4" onkeyup= ' Mc2("<?=$mat?>")' onKeyPress="return OnlyEspeciais(this,event);" />
<td bgcolor="#B4CDCD"><input name="av24<?=$cont?>" id ="av<?=$mat?>24" type="text" value=" <?=$av24?>" size="1" maxlength="4" onkeyup= ' Mc2("<?=$mat?>")' onKeyPress="return OnlyEspeciais(this,event);" />
<td bgcolor="#B4CDCD"> <input name="mc2<?=$cont?>" id ="mc2<?=$mat?>" type="text" value="<?=$mc2?>" size="1" maxlength="4" onKeyPress="return OnlyEspeciaisBranco(this,event);" />
Esse tipo de erro tem que analisar o codigo e os estados das variaveis…
Aconselho você usar o FireBug para FireFox .
Ele aponta erros de javascript, se você habilitar o console!
Use a TAG CODE para postar…
aramis
Abril 9, 2009, 2:31pm
#15
cara ! fiz de tudo mas nada !
quando clico no campo aparece o NAN
E DEPOIS clico no 23 ai aparece os numeros normais !!
[]
Primeiro veja se esta percorrendo o for normalmente.
Outra coisa que pode estar acontecendo é o valor não estar vazio e não ser numérico… Você poderia fazer isso com o valor antes:
var val = document.getElementById("...").value;
val = val.replace(/[^0-9.]/g, "");
if(val != ""){
//processa valor...
}
aramis
Abril 9, 2009, 3:44pm
#17
[
cara eu usei aquele programa e ele me deu o seguinte erro
campo_atual is null
Mc2(“0822381”)carrega_…nistrador (linha 1194)
onkeyup(keyup charCode=0, keyCode=8)carrega_…F0g%3D%3D (linha 2)
[Break on this error]
carrega_…nistrador (linha 1194)
campo_atual is null
Mp(undefined)carrega_…nistrador (linha 1129)
onkeyup(keyup charCode=0, keyCode=97)
não entendi bem está null ??
]
Isso significa que quando você está usando o campo_atual, a variável está nula… No caso, se voce deu um document.getElementById(), a função não encontrou o elemento com ID fornecido e retornou null!
aramis
Abril 9, 2009, 4:04pm
#19
cara eu dei um
alert(campo_atual)
e a mensagem me trouxe null, ou seja ele não está conseguindo ou pegando o id !!
vc sabe pq acontece isso ?
function Mc2(mat) {
cont1=0;
valor=0;
for (y=21;y<=24;y++){
campo_atual=document.getElementById("av" +mat+ y);
alert(campo_atual);
if (campo_atual.value!=""){
valor+=parseInt(campo_atual.value);
cont1++;
}
campo_media1=document.getElementById("mc2"+mat);
campo_media1.value =valor/cont1;
}
}
aqui eu pedi para exibir o código fonte
<td bgcolor= "#B4CDCD"> <input name="av211" id ="av082238121 " type="text" value=" " size="1" maxlength="4" onkeyup='Mc2("0822381")' onKeyPress="return OnlyEspeciais(this,event);" />
<td bgcolor= "#B4CDCD"> <input name="av221" id ="av082238122 " type="text" value=" " size="1" maxlength="4" onkeyup='Mc2("0822381")' onKeyPress="return OnlyEspeciais(this,event);" />
<td bgcolor= "#B4CDCD"> <input name="av231" id ="av082238123 " type="text" value=" " size="1" maxlength="4" onkeyup='Mc2("0822381")' onKeyPress="return OnlyEspeciais(this,event);" />
<td bgcolor= "#B4CDCD"> <input name="av241" id ="av082238124 " type="text" value=" " size="1" maxlength="4" onkeyup='Mc2("0822381")' onKeyPress="return OnlyEspeciais(this,event);" />
vc sabe pq acontece isso ??
aramis
Abril 10, 2009, 3:01pm
#20
cara valeu pela ajuda mesmo !!
agora seguinte eu tenho um função que muda a cor ! de o valor for menor que 7
só que ai grava os dados do meu formulário, mas quando carrego a página novamente a cor não permanece mais
tem como fazer para elas permanecer após os dados serem carregados novamnete ??
a função é essea
function validaNota(obj){
if(obj.value < 7 && obj.value != ""){
obj.style.backgroundColor="#FF0000";
}else{
obj.style.backgroundColor="";
}
}
e chamo com o onblur
aguardo a resposta
desde já agradeço !