¿Qué debo hacer para que al picar un botón el texto de dentro me cambie?

Tengo un texto en un
<div></div>
y quiero que al picar un botón el texto de dentro me cambie. Se que es con javascript pero no se como hacerlo... A ver si me pudieras indicar que instrucción he de utilizar.
¿Habrá problema con el tipo de navegador?
Respuesta
1
1. Definir en el <HEAD>:
<script>
function setText() {
var texto = "Texto creado dinámicamente"
var navegador = navigator.userAgent.toLowerCase();
if (navegador == 'msie') {
//IE 4+
document.all.dinamico.innerHTML = texto
}
else if(navegador == 'compatible') {
//NS 6
document.getElementById("dinamico").innerHTML = texto
}
}
</script>
2. En el <BODY>:
<div ID="dinamico">texto de la capa</div><br>
<a href=# onClick="javascript:setText()">Cambiar texto</a>
Para Netscape 4:
<ilayer name="dinamico"><layer
name="dinamico2">texto de la capa</layer></ilayer>
y en la función de cambio de texto:
document.dinamico.document.dinamico2.document.write(texto)
Document. Dinamico.document.dinamico2.document.close()
Hola compañero,
Antes de nada agradecer la rapidez de la respuesta.
La parte última no la entiendo:
document.dinamico.document.dinamico2.document.write(texto)
document.dinamico.document.dinamico2.document.close()
Me da error, lo he puesto dentro de la función, no se si he hecho lo correcto.
Muchas gracias,
David
Hola de nuevo,
Lo he hecho poniendo solo document. write(texto); y ahora si me hace el cambio pero lo hace arriba en la esquina. Yo tengo el texto dentro de un td y dentro del td el div, ¿hay alguna manera para seguir respetando la intentar?
Muchas gracias.
1. El código:
Document.dinamico.document.dinamico2.document.write(texto)
document. Dinamico.document.dinamico2.document.close()
Sólo es para NS4, el problema es que con este navegador no se pueden editar los <div> y deben definirse <layer> en su lugar. Puedes omitirlo.
2. Document. write(texto) escribe en la página no en el <div>, por eso te sale arriba.
3. Añade:
document.write(navegador);
debajo de:
var navegador = navigator.userAgent.toLowerCase();
Para ver qué navegador detecta. En caso que valga 'msie' o 'compatible' debería funcionar. Para otros navegadores hay que ver si se puede hacer y si hay que cambiar algo.
Saludos,
iNphYx
Genial!
no me pillaba bien el tema del navegador, el if (navegador == 'msie') no lo hacia. He puesto esto y chuta:
var ie = (document.all) ? true:false
var n6 = (document.getElementById) ? true:false
if (ie == true) {
}else if(n6 == true) {
}
Muchas gracias por todo.

7 respuestas más de otros expertos

Respuesta
1
La instruvccion que tienes que ponder es:
InnerText para cambiar el texto e InnerHTML para cambiar el contenido del HTML...
Tiense que hcaer una funcion que cuando la llames sea asi:
function Escritura (id,capaReferencia)
{
var texto ="TEXTO HTML O N HTML QUE QUIERES QUE SALGA"
var capa
if (net4)
{
if (capaReferencia)
capa = eval ('document.'+capaReferencia+'.document.'+id+'.document')
else
capa = document.layers[id].document
capa.open()
capa.write(texto)
capa.close()
}
else
if (ex4)
document.all[id].innerHTML = texto
}
El boton que llame a la funcion tendra que ser del tipo :
onclick="Escritura ('nombre_de_la_capa',null)"
Con esto funciona para todos los navefadores...
Respuesta
1
Puedes hacer esto fácilmente con DOM, por ejemplo:
<html>
<head>
<script>
var i = 1;
function cambiar(){
status = document.getElementById("capa").firstChild.nodeValue;
document.getElementById("capa").firstChild.nodeValue = "Cambiado " + i++ + " veces";
}
</script>
</head>
<body>
<div id="capa" onclick="cambiar()">
Texto de inicio...
</div>
</body>
</html>
En principio DOM es universal, pero es posible que la etiqueta DIV te de algún problema en algún navegador... Esto esta probado en explorer 6...
Respuesta
1
Pues no creo que sea problema de Navegador, No tengo mucha experiencia con JavaScript (Disculpa que no pueda ayudarte en este aspecto)
Pero tengo entendido que podría lograrse con DHTML (Que viene igual combinado con JavaScript)
Sí deseas profundizar, investigaré sobre el tema.
Respuesta
1
Para la mayor aparte de los navegadores más extendidos reconocen los atributos.
En lugar de usar DIV podrías usar estilos en CSS para cosas como subrayados, colores, etc.
También se pueden hacer otras cosas en JavaScript pero necesito hacerme una idea de lo que quieres.
Explícame un poco más. Indícame qué efecto es el que quieres darle al enlace para ayudarte un poco más.
Arwing
Respuesta
1
Por eso es que muchos diseñadores utilizamos Algún botón hecho en flash, de las dimensiones de tu celda, desde luego que solo contenga el texto y tu escribes el texto al que cambiará en la parte de OVER STATE.
Es mucho más sencillo incluso que ocupar JavaScript.
Si no sabes Flash, puedes descargarte el programa Swish 2.0 desde el sitio: http://www.swishzone.com y estudiar el tutorial de botones, que es muy sencillo de utilizar, ya que puedes dominarlo en menos de una hora.
Respuesta
1
Por la pregunta del navegador tengo que decirte que podría llegar a presentarse algún problema de incompatibilidad sobre todo entre Netscape e Internet Explorer. Pero de cualquier modo, se puede hacer un pequeño código para realizar la acción de la forma adecuada según el explorador.
Sería algo así:
switch (Navigator.Name){
case "Internet Explorer" : change("Chau")
break
case "Netscape" : changer("Chau")
break
}
function change(texto){
document.texto1.value = texto
}
function chager(texto){
document.layers("texto1").value = texto
}
Atentamente. Manuel Fernández.
Respuesta
1
Acá te mando un ejemplo, ojala te sirva, suerte!
<html>
<body>
<div id=div01>
</div>
<input type=button value=cambiar onClick="document.all.div01.innerHTML = 'HOla';">
</body>
</html>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas