javascript método onClick();

Iniciado por Arm144, 26 Febrero 2017, 21:41 PM

0 Miembros y 1 Visitante están viendo este tema.

Arm144

Buenas me gustaría saber una forma de conseguir que al pulsar un botón me devuelva por ejemplo 'a'. a continuación si pulso de nuevo que me devuelva 'b'. y repetir el proceso.
Todo ello en javascript lo he intentado de mil y una formas y ya me quedo sin ideas.
Pense esto pero obviamente no funciona.


<script>
function valor(values){
value=values.split(",");
for(var i=0;i<value.length;i++){
if (value=='A'){
var value='B';
}else if(value=='B'){
var value='A';
}
alert(value);
i++;
}
}
</script>
<body>
<input type="button" onClick="valor('ASC,DESC');" value="valor">
</body>

engel lex

tienes varias formas, una sería hacer una variable global para darle el valor, otra es pegarlo a la variable window para hacerla global dinamicamente, otra forma es pasarselo a algún campo asociado al boton para que el sea quien lo guarde
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Arm144

Algún ejemplo por favor?, ya que lo intenté con variable global y tampoco me salió anteriormente.  :-[

engel lex

para mi esmas facil que el botón guarde el estado, así que lo haré así

fijate que paso un argumento "this" que referencia al mismo botón y que agrego una propiedad que no interferiá con el funcionamiento del input
Código (html4strict) [Seleccionar]
<input type="button" onClick="valor(this);" value="valor" estado="A">


con manejo del DOM es cosa de acceder al estado para leerlo y cambiarlo, usando como ancla el argumento pasado

Código (javascript) [Seleccionar]
function valor(elemento) {
   var att = elemento.getAttribute("estado");
   alert(att)
   if(att=='A'){
    elemento.setAttribute("estado","B");
   }else{
    elemento.setAttribute("estado","A");
   }
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Arm144

Gracias resuelto del siguiente modo:

<script>
window.estado=0;
function verificador(estado)
{
if (estado==0)
{
alert("DESC");
window.estado++;
}
else if (estado==1)
{
alert("ASC");
window.estado=0;
}

}
</script>
<body>
<button onclick="verificador(estado);">PRUEBA</button>
</body>

engel lex

el window.estado hace el trabajo, te doy 2 correciones

no estás usando estado, no lo necesitas como parametro, puedes quitarlo en
function verificador()

y

onclick="verificador();"

otra cosa, si vas a manejar solo 0 y 1 no uses ++, podría causarte un conflicto si tu codigo se vuelve más complejo, usa solo estado bien conocidos, tambien, si no vas a usar más casos de if, no es necesario el else if, un simple else hará el trabajo y ayudará a reducir errores, para esto

if (estado==0)
   {
    alert("DESC");
    window.estado=1;
   }
   else
   {
    alert("ASC");
    window.estado=0;
   }
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

WHK

Para crear atributos personalizados en html se utiliza data-nombre, reemplazas nombre por el nombre del parametro personalizado, sin espacios ni guiones adicionales, solo letras y números.

Por ejemplo:

<input type="button" onclick="valor(this);" value="valor" data-estado="A">

Otra cosa, onClick no existe como atributo según el estandar de la w3c, que los navegadores lo ejecuten es otra cosa pero no están obligados a hacerlo, el estandar a partir de xhtml hacia arriba dice que todos los nombres de etiquetas y atributos van en minusculas, las mayusculas no debieran ser interpretados.


engel lex

Cita de: WHK en 27 Febrero 2017, 00:11 AM
Para crear atributos personalizados en html se utiliza data-nombre, reemplazas nombre por el nombre del parametro personalizado, sin espacios ni guiones adicionales, solo letras y números.

Por ejemplo:

<input type="button" onclick="valor(this);" value="valor" data-estado="A">

Otra cosa, onClick no existe como atributo según el estandar de la w3c, que los navegadores lo ejecuten es otra cosa pero no están obligados a hacerlo, el estandar a partir de xhtml hacia arriba dice que todos los nombres de etiquetas y atributos van en minusculas, las mayusculas no debieran ser interpretados.



:silbar: tengo ue retomar un poco el studio de los standards! jejeje gracias por la aclaración
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Arm144

Gracias por las correciones y ayudas. Saludos