2013-07-17 2 views
0

У меня есть этот JS-код:Javascript не работает в IE8, но в IE9 и FF делает

<script type="text/javascript"> 

function start() { 
    document.forms[0].username.focus();   
     var celdas; 
     var tabla; 
     tabla = document.getElementById("tabla"); 
     celdas = tabla.getElementsByTagName("td"); 
     for (var i=0; i<celdas.length; i++) { 
      if (celdas[i].innerHTML == "<b>Please Login</b>"){ 
       celdas[i].innerHTML = "<b>Identificación de usuario</b>" 
      } 
      if (celdas[i].innerHTML == "<b>Name:</b>"){ 
       celdas[i].innerHTML = "<b>Nombre:</b>" 
      } 
      if (celdas[i].innerHTML == "<b>Password:</b>"){ 
       celdas[i].innerHTML = "<b>Contraseña:</b>" 
      } 
     } 

     boton = document.getElementById("login_button"); 
     boton.value="Entrar"; 
    } 

    window.onload = start; 
</script> 

Для этого HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

<!--head, meta tags, body and other stuff---> 

    <table class="list" id="tabla"> 
     <tr class="dark"> 
      <td colspan=2></td> 
     </tr> 
     <tr class="dark"> 
      <td colspan=2><b>Please Login</b></td> 
     </tr> 

    <!-- ETC ETC - more table stuff--> 

HTML, проходят проверку, и JS работает в Firefox и IE9, но не в IE8 даже IE7. Когда я отлаживать шаг за шагом JS, я вижу, что IE8 останавливается здесь:

if (celdas[i].innerHTML == "<b>Password:</b>") 

Но не этого шага:

celdas[i].innerHTML = "<b>Contraseña:</b>" 

Я не очень свободно в JS, так что, возможно, я делаю абсолютно тупую ошибку n00b ... это мой код? Почему это не работает?

+0

http://stackoverflow.com/questions/1344470/why-is-document-getelementbyidtableid-innerhtml-not- work-in-ie8 – DarkBee

+0

@DarkBee В моем случае, находится в '', который не указан в вопросе, который вы опубликовали ... – Arkana

+0

innerHTML проблема в IE8 –

ответ

1

Попробуйте это, я думаю свой вопрос с innerHTML

function replace_html(el, html) { 
    if(el) { 
     var oldEl = (typeof el === "string" ? document.getElementById(el) : el); 
     var newEl = document.createElement(oldEl.nodeName); 

     // Preserve any properties we care about (id and class in this example) 
     newEl.id = oldEl.id; 
     newEl.className = oldEl.className; 

     //set the new HTML and insert back into the DOM 
     newEl.innerHTML = html; 
     if(oldEl.parentNode) 
      oldEl.parentNode.replaceChild(newEl, oldEl); 
     else 
     oldEl.innerHTML = html; 

     //return a reference to the new element in case we need it 
     return newEl; 
    } 
}; 

Ссылка: http://www.jonefox.com/blog/2009/05/21/internet-explorer-and-the-innerhtml-property/

Смежные вопросы