element has no properties i FF, virker i IE
Hej,Jeg har nedenstående script, som bruges til et multiuploader script. Det fungere fint i IE, men i FF får jeg fejlen 'file has no properties' i linie 39.
Jeg må inderømme at jeg simpelthen ikke kan se hvad der er galt. Jeg tror jeg har stirret mig blind på det efterhånden.
var fileNumber = 0;
var fileCount = 0;
function addFile()
{
var files = document.getElementsByTagName("input");
for (var i = 0; i < files.length; i++) {
if (files[i].type == "file" &&
files[i].style.display == "")
return;
}
fileNumber++;
var file = document.createElement("input");
file.type = "file";
file.id = "file" + fileNumber;
file.name = "file" + fileNumber;
file.size = 32;
file.onchange = onFileChange;
var fileContainer = document.getElementById("fileContainer");
fileContainer.appendChild( file );
document.getElementById("addFile").style.display = "none";
}
function onFileChange(e)
{
if (!e) {
e = window.event;
}
var labelContainer = document.getElementById("labelContainer");
var file = e.srcElement;
var fileName = file.value;
if( fileName == "" ) {
fileContainer.removeChild(file);
document.getElementById("addFile").style.display = "";
} else {
var i = fileName.lastIndexOf("\\");
if (i >= 0) {
fileName = fileName.substr(i+1);
}
else {
window.alert("Forkert fil!");
document.getElementById("addFile").style.display = "";
fileContainer.removeChild(file);
return;
}
i = fileName.lastIndexOf(".");
var extension = "";
if (i >= 0) {
extension = fileName.substr(i+1);
} else {
window.alert("Forkert fil!");
document.getElementById("addFile").style.display = "";
fileContainer.removeChild(file);
return;
}
var imageType = "";
switch (extension.toLowerCase()) {
case "jpg":
case "jpeg":
imageType = "JPG";
break;
case "gif":
imageType = "GIF";
break;
case "png":
imageType = "PNG";
break;
case "bmp":
imageType = "BMP";
break;
default:
window.alert("Forkert format! (" + extension + ")");
document.getElementById("addFile").style.display = "";
fileContainer.removeChild(file);
return;
}
file.style.display = "none";
var label = labelContainer.insertRow();
label.id = "label" + fileNumber;
var cell1 = label.insertCell();
cell1.style.color = "#cc0000";
cell1.style.fontWeight = "bold";
cell1.innerHTML = imageType;
var cell2 = label.insertCell();
var a = document.createElement("a");
a.href = file.value;
a.className = "link";
a.target = "_blank";
a.onmouseover = showThumbnail;
a.onmouseout = hideThumbnail;
a.innerText = fileName;
cell2.appendChild( a );
var cell3 = label.insertCell();
cell3.innerHTML = "<img id='img" + fileNumber + "' onload='java script:setSize(this)' src='file://" + file.value.replace("\\", "/") + "' style='visibility:hidden'>";
var cell4 = label.insertCell();
cell4.innerHTML = "<input type='text' name='desc" + fileNumber + "' maxlength='64' class='form_new_ad' style='width:90%' value='" + fileName.charAt(0).toUpperCase() + fileName.substr(1, fileName.lastIndexOf(".")-1).replace(/_/g, " ") + "'>";
var cell5 = label.insertCell();
cell5.style.textAlign = "right";
cell5.innerHTML = "<a href='#' onclick='java script:removeFile(" +
fileNumber + ");'>Fjern</a>";
fileCount++;
document.getElementById("addFile").style.display = "";
}
}
function setSize(img)
{
var width = img.width;
var height = img.height;
img.parentElement.innerText = width + "x" + height;
}
function showThumbnail(e)
{
if (!e) {
e = window.event;
}
var a = e.srcElement;
var thumbnail = document.getElementById("thumbnail");
thumbnail.style.visibility = "visible";
thumbnail.style.left = e.clientX + "px";
thumbnail.style.top = (e.clientY + 10) + "px";
var img = document.createElement("img");
thumbnail.appendChild( img );
img.onload = showThumbnailOnLoad;
img.src = a.href;
}
function hideThumbnail()
{
var thumbnail = document.getElementById("thumbnail");
thumbnail.innerText = "";
thumbnail.style.visibility = "hidden";
}
function showThumbnailOnLoad(e)
{
if (!e) {
e = window.event;
}
var MAX_WIDTH = 320;
var img = e.srcElement;
if (img.width > MAX_WIDTH) {
var ratio = img.height / img.width;
img.width = MAX_WIDTH;
img.height = Math.round(ratio * MAX_WIDTH);
}
img.parentElement.style.width = img.width + "px";
img.parentElement.style.height = img.height + "px";
}
function removeFile(number)
{
var fileContainer = document.getElementById("fileContainer");
var labelContainer = document.getElementById("labelContainer");
var file = document.getElementById("file" + number);
var label = document.getElementById("label" + number);
fileContainer.removeChild( file );
labelContainer.deleteRow( label.rowIndex );
fileCount--;
}
function validateForm()
{
if( fileCount == 0 ) {
window.alert("Du skal vælge nogen filer!");
return false;
} else {
var files = document.getElementsByTagName("input");
var ids = "";
var prefix = "";
for (var i = 0; i < files.length; ++i) {
if (files[i].type == "file") {
ids += prefix + files[i].id.substr(4);
prefix = ",";
}
document.getElementById("ids").value = fileCount;
document.forms['new_ad'].submit();
}
return true;
}
}
Håber virkelig nogen kan hjælpe, da jeg er ved at blive sindsyg over det.
