inner entre ejemplos diferencia beforeend and javascript html string internet-explorer innerhtml

javascript - entre - innerhtml php



.InnerHTML No funciona correctamente en Internet Explorer (10)

A mucha gente le falta el punto aquí. Lo que intenta hacer (después de corregir el error tipográfico donde falta el atributo href) funciona en cualquier otro navegador.

IE 8 y siguientes tienen un error donde si el primer elemento en el texto al configurar innerHTML es una etiqueta (tal vez otros), se ignora. Si acaba de poner un espacio o línea nueva u otra etiqueta primero, funciona.

Incluso descubrió esto cuando dijo que poner <div> primero lo arregla.

No es válido, pero así es como lo arreglas.

Editar: en otras palabras: foo.innerHTML = "/n" + yourHtmlWithLinkInIt ;

Quería asignar una etiqueta de enlace a innerHTML de un control HTML. Pero esto no funciona correctamente en Internet Explorer. Sin embargo, cuando trato de asignar algo que no sean las etiquetas <link> & <style> funciona bien.

<html> <head> <script type="text/javascript"> function getValue() { var x=document.getElementById("myHeader"); x.innerHTML=''<link /"http://test.com/css/template.css/" rel=/"stylesheet/"><div>abc</div>''; alert(x.innerHTML); } </script> </head> <body> <h1 id="myHeader" onclick="getValue()">Click me!</h1> </body> </html>

Además, si cambio la secuencia de la etiqueta <div> y la etiqueta <link> arriba también funciona bien en Internet Explorer.

x.innerHTML=''<div>abc</div><link /"http://test.com/css/template.css/" rel=/"stylesheet/">'';

¡Por favor recomiende! Gracias.

EDITAR: Este es un error en Internet Explorer con ExtJs. Mas información en

http://www.sencha.com/forum/showthread.php?30110-internet-explorer-autoLoad-css-not-applied


Creo que el problema es que el <link> que ser un elemento vacío. cambia tu código a esto:

x.innerHTML=''<link /"http://test.com/css/template.css/" rel=/"stylesheet/" /><div>abc</div>''; // this is the trick ^^^

EDITAR: No lo he probado, pero es lo primero que me lastima los ojos.

EDIT2: las etiquetas <link> solo deberían aparecer dentro de la sección <head> ... espero que sepas lo que intentas hacer.


Para empezar, te falta un atributo href en tu <link> .

<link href=/"http://test.com/css/template.css/" rel=/"stylesheet/" />

Y no coloque etiquetas de enlace y estilo en el <body> . Inyectarlos en el <head>

var link = document.createElement("link"); link.href = "http://test.com/css/template.css"; link.rel = "StyleSheet"; document.head.appendChild(link);


para establecer el texto correctamente, le recomendaría que vaya a lo que generalmente hago. si tienes ie 8 entonces abre el html en ie. presione f12 para mostrar la herramienta de desarrollador. ahora en la nueva ventana ve a la etiqueta de script. establecer punto de interrupción desde donde comienza su javascript. ahora presione el botón para comenzar la depuración. ejecuta la función js desde tu por algún evento o la forma en que se ejecuta. ahora en el objeto en la función javascripg, cuando el punto de quiebre golpea, haga clic derecho y agregue reloj. expanda el objeto y vea, donde estaba su texto anterior y dónde está su nuevo texto.


¿Qué es exactamente lo que estás tratando de lograr, como tu objetivo final? Como dije anteriormente, una etiqueta de enlace solo debería aparecer en el <head> de un documento html.

JavaScript puede ser algo complicado en su sabor vanidoso, es mejor usar un framework, mi favorito personal es MooTools aunque escuché que JQuery es bastante bueno, pero MooTools tiene OOP (para programadores reales - tehe).

Esto le permitirá hacer mucho más, y probablemente logre su objetivo final. Si me permite saberlo, entonces debería obtener una respuesta más directa a su problema.


innerHTML no funcionará en IE, pero usando los métodos DOM:

function getValue() { var x=document.getElementById("myHeader") , link = document.createElement(''link'') , div = document.createElement(''div''); x.innerHTML = ''''; x.appendChild(link); x.appendChild(div); div.innerHTML = ''abc''; link.href = ''http://test.com/css/template.css''; link.rel = ''stylesheet''; alert(x.innerHTML); }

Aunque la referencia indica que una etiqueta de link solo puede aparecer en el encabezado, lo suficientemente interesante como para que el enlace de estilo funcione si usa el código que proporcioné, en todos los navegadores probé (IE, firefox, chrome). Ver este jsfiddle (donde usé un css-href real de test.com ;-)

Sin embargo, si desea colocar el link en la sección correspondiente ( <head> ), use:

var header = document.getElementsByTagName(''head'')[0]; , link = document.createElement(''link''); header.appendChild(link); link.href = ''http://test.com/css/template.css''; link.rel = ''stylesheet'';


Lo que pasa es que funciona en Firefox y Google Chrome, pero no en IE.

Esto es porque no puede establecer la etiqueta innerHTML de InternetExplorer con una cadena, si la cadena es más que texto, es decir, un elemento HTML.

Experimenté esto intentando poblar dinámicamente un ComboBox en una celda de tabla con AJAX ...

La solución es usar JQuery.
Entonces puedes hacer:
$("#YourElementID").html(''<link /"http://test.com/css/template.css/" rel=/"stylesheet/" /> <div>abc</div>'');
y JQuery hará las cosas de DOM, que selbie y KooiInc describen, para ti.




tratar

document.getElementById(''tblList'').outerHTML="ypur html";