Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: loadingApersona en 24 de Agosto 2016, 09:28

Título: clase en JavaScript comprobar si existe un archivo en el ordenador ActiveXObject
Publicado por: loadingApersona en 24 de Agosto 2016, 09:28
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.
Título: Re:Problema al intentar cambiar una clase en JavaScript
Publicado por: Kabuto 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.
Título: Re:clase en JavaScript comprobar si existe un archivo en el ordenador ActiveXObject
Publicado por: loadingApersona en 30 de Agosto 2016, 12:57
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.