Problemas com JavaScript e JSP/Struts

8 respostas
G

Em um formulário fiz a listagem das marcas de veiculos. Ao lado de cada marca contém uma icone de alterar e outra de deletar!

Na icone de deletar chamo um JavaScript que contém um alert para confirmar a exclusão!

O problema é que quando chamo a action pelo JavaScript a variavel id setada é sempre a ultima da tebela!

Como fazer para que a variavel set a marca escolhida?

Aqui está meu código!

<c:forEach var=“marca” items="${listamarca}">

<tr bgcolor="#ffffff" style="cursor:default;" onMouseOver="this.bgColor='#DDE3EB'" onMouseOut="this.bgColor='#FFFFFF'"> 
	<td width="400" height="40" align="center">
		<font color="#336699" size="-1" face="Verdana, Arial, Helvetica, sans-serif">
		<strong>${marca.marca}</strong></font></td>
    <td align="center" width="43" height="40"> 
		<a target="home" href="carregaMarca.do?marca.id=${marca.id}">
		<img border="0" src="imagem/attachment_24.gif"></a></td>
    <td align="center" width="47" height="40">
		<a target="home"  onClick="confirmBox()">
		<img src="imagem/remove_24.gif" border="0"></a></td>
 </tr>

</c:forEach>

8 Respostas

nbluis

mas quantas funcoes tu cria ai no teu laço???
Qual o erro ele te aponta?

Roger75

Você tem que passar o id de cada registro da tabela como parâmetro na sua function confirmBox().

furutani
use o forEach apenas aqui
<c:forEach var="marca" items="${listamarca}"> 
<tr bgcolor="#ffffff" style="cursor:default;" onMouseOver="this.bgColor='#DDE3EB'" onMouseOut="this.bgColor='#FFFFFF'">
<td width="400" height="40" align="center">
<font color="#336699" size="-1" face="Verdana, Arial, Helvetica, sans-serif">
<strong>${marca.marca}</strong></font></td>
<td align="center" width="43" height="40">
<a target="home" href="carregaMarca.do?marca.id=${marca.id}">
<img border="0" src="imagem/attachment_24.gif"></a></td>
<td align="center" width="47" height="40">
<a target="home" onClick="confirmBox()">
<img src="imagem/remove_24.gif" border="0"></a></td>
</tr>
</c:forEach>
Só altere a funçõa javascript para passar o id do item q vc quer deletar
<a target="home" onClick="confirmBox(${marca.id})">
<SCRIPT LANGUAGE="JavaScript">
function confirmBox(id) {
if (confirm("Tem certeza que deseja deletar esta marca?\n :: A T E N Ç Ã 0: AÇÃO IRREVERCÍVEL ::" )) {
location.href="deletaMarca.do?marca.id=id";}
}
fabiozoroastro

O erro está aqui:

O correto é:
irreversível.

rs…
abraço.

G

Galera valeu pela ajuda! Deu certo!

Só aqui no location.href que modifiquei! Concatenei a variável:

location.href=“deletaMarca.do?marca.id=” + id;

Ha corrigi o hirreversível também! Valeu pela ajuda! Português não é meu forte!

Valeu!

M

não sei se entendi, mas por que tu não passa o ID pela chamada do javascript exemplo confirmBox(${marca.id}) não sei se a sintaxe é bem esta… já que vai ter um onclick em cada linha da grid.

falou

fabiozoroastro

IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIrreversivel.
NUNCA utilize a letra H.
hehehe
abraço.

Y

*IRREVERSÍVEL
¬¬

Assim:

<script language="JavaScript"> 
function confirmDelete(id)
  {
   // criar uma variável com a mensagem aqui  pra tornar o código mais legível
   var message = "Tem certeza de que deseja deletar esta marca?\n :: A T E N Ç Ã 0: AÇÃO IRREVERSÍVEL ::";

   if (confirm(message))
     { window.location.href = "deletaMarca.do?marca.id=" + id; } 
  }
</script>

<c:forEach var="marca" items="${listamarca}">
  <tr bgcolor="#FFFFFF" style="cursor: default;" onmouseover="this.bgColor='#DDE3EB';" onmouseout="this.bgColor='#FFFFFF';">
    <td width="400" height="40" align="center">
      <font face="Verdana, Arial, Helvetica, sans-serif" size="-1" color="#336699">
        <strong>${marca.marca}</strong>
      </font>
    </td>
    <td align="center" width="43" height="40">
      <a target="home" href="carregaMarca.do?marca.id=${marca.id}">
        <img border="0" src="imagem/attachment_24.gif">
      </a>
    </td>
    <td align="center" width="47" height="40">
      <a target="home" onclick="confirmDelete(${marca.id});">
        <img src="imagem/remove_24.gif" border="0">
      </a>
    </td>
  </tr>
</c:forEach>

OU assim

<script language="JavaScript"> 
function confirmDelete(id)
  {
   var message = "Tem certeza de que deseja deletar esta marca?\n :: A T E N Ç Ã 0: AÇÃO IRREVERSÍVEL ::";
   return (confirm(message))
  }
</script>

<c:forEach var="marca" items="${listamarca}">
  <tr bgcolor="#FFFFFF" style="cursor: default;" onmouseover="this.bgColor='#DDE3EB';" onmouseout="this.bgColor='#FFFFFF';">
    <td width="400" height="40" align="center">
      <font face="Verdana, Arial, Helvetica, sans-serif" size="-1" color="#336699">
        <strong>${marca.marca}</strong>
      </font>
    </td>
    <td align="center" width="43" height="40">
      <a target="home" href="carregaMarca.do?marca.id=${marca.id}">
        <img border="0" src="imagem/attachment_24.gif">
      </a>
    </td>
    <td align="center" width="47" height="40">
      <a target="home" onclick="javascript:if (confirmDelete()) { window.location.href = 'deletaMarca.do?marca.id=${marca.id}' };">
        <img src="imagem/remove_24.gif" border="0">
      </a>
    </td>
  </tr>
</c:forEach>
Criado 23 de fevereiro de 2007
Ultima resposta 24 de fev. de 2007
Respostas 8
Participantes 7