Autor Tema: clase en JavaScript comprobar si existe un archivo en el ordenador ActiveXObject  (Leído 5543 veces)

loadingApersona

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Hola. Estoy intentando hacer un código que me permita comprobar que si existe un archivo en el ordenador lo imprima de un color u otro en las celdas de una tabla básica. No he programado demasiado con JavaScript y no sé si estoy comentiendo un error muy básico o algo por el estilo.

Esta es la función que tengo escrita.
Código: [Seleccionar]
function existeArchivo(archivo){
var fso = new ActiveXObject("Scripting.FileSystemObject");
fileBool = fso.existeArchivo(archivo);
if(fileBool){document.getElementById("documento").className= "entregado";}
else{document.getElementById("documento").className= "noEntregado";}
}

Las clases definidas en la hoja de estilo.
Código: [Seleccionar]
.noEntregado {
background-color: #DD2828;
}
.entregado {
background-color: #1CA54C;
}

Por último cómo los llamo en el código HTML y qué coloco en las celdas:

Código: [Seleccionar]
<head>
<title>Entrega de documentos</title>
<link rel="stylesheet" href="apariencia.css" type="text/css" media="all">
<script type="text/javascript" src="javascript.js"></script>
 
</head>
Código: [Seleccionar]
<tr>
<th>Juan</th>
<td id="documento" onload="existeArchivo(D:\Prueba\docs1\fabri1\blabla1.txt)"></td>
<td id="documento" onload="existeArchivo(archivo)"></td>
<td id="documento" onload="existeArchivo(archivo)"></td>
</tr>

Muchas gracias por su atención.
« Última modificación: 26 de Agosto 2016, 13:57 por César Krall »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Problema al intentar cambiar una clase en JavaScript
« Respuesta #1 en: 24 de Agosto 2016, 13:03 »
Hola,
estoy verde, verdísimo, en HTML y más en JavaScript.

Pero creo que uno de los problemas es que las celdas TD tienen el mismo ID("documento").

El ID ha de ser único para cada elemento, es como el DNI de las personas, no puede haber varias personas con el mismo DNI.
Entonces, para esto que quieres hacer, seleccionar elementos por su ID no parece ser el camino.

En la funcion existeArchivo, en lugar de hacer un getDocument por ID, tal vez podrías usar la palabra  "this" como parametro de la funcion y cambiarle la clase.

Es decir,, en el HTML:

Código: [Seleccionar]
<tr>
<th>Juan</th>
<td onload="existeArchivo(this,D:\Prueba\docs1\fabri1\blabla1.txt)"></td>
<td onload="existeArchivo(this,archivo)"></td>
<td onload="existeArchivo(this,archivo)"></td>
</tr>

Así, con el this, estás pasandole a la función el elemento concreto (la celda en este caso) que está llamando a la función.

Este this lo recoges fácilmente al declarar la funcion, pro ejemplo puedes llamarlo celda:
Código: [Seleccionar]
function existeArchivo(celda,archivo)
{
.....
}

De ese modo, "celda" representa la celda a la que ha llamado la funcion, y ya solo tienes que aplicarle una clase u otra según si se encuentra el archivo o no.
Código: [Seleccionar]
if(fileBool){celda.className= "entregado";}
else{celda.className= "noEntregado";}
}

Con esto más o menos, a falta de que alguien que sepa más que yo (repito que estoy verde verdísimo... xD ) lo confirme y corrija, deberías poder cambiar la clase de cada celda.
« Última modificación: 24 de Agosto 2016, 13:05 por Kabuto »
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

loadingApersona

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Al final lo intenté pero no salió cómo esperaba. Pasé a hacer un ejecutable y con batch me las he apañado para generar un log, no queda tan bonito cómo una tabla con colorines pero está bien.

Gracias por la ayuda.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".