Показать сообщение отдельно
  #1 (permalink)  
Старый 25.08.2010, 00:51
Новичок на форуме
Отправить личное сообщение для Илюшенций Посмотреть профиль Найти все сообщения от Илюшенций
 
Регистрация: 25.08.2010
Сообщений: 1

Рациональность JS кода.
Доброго времени суток. Я написал скрипт динамической замены input type="file". После чего JS эксперт мне сказал - "налепленно все в кучу, вы не понимаете что делаете и зачем делаете. у вас проблемы в базовых знаниях, извините, но не могу вам разжевывать". Кто сможет грамотно раскрыть его слова.
functiоn InputFileFake()
{
var fileInput = document.getElementById('file_input');
var fileType = document.createElement('div');
var divFile = document.getElementById('div_file');
var fileButtоn = document.createElement('div');
var fakeFile = document.createElement('div');
fileInput.оnchange = HandleChanges;
fileType.style.display = 'none';
fileType.style.background = 'url(images/form/file_type_icons.png)';
fileType.setAttribute('id','file_type');
fileButton.setAttribute('id','file_button');
fakeFile.setAttribute('id','fake_button');

divFile.appendChild(fileButton);
divFile.appendChild(fakeFile);
divFile.appendChild(fileType);

};
functiоn HandleChanges()
{
fileInput = document.getElementById('file_input');
fileType = document.getElementById('file_type');
file = fileInput.value;
reWin = /.*\\(.*)/;
var fileTitle = file.replace(reWin, "$1"); //выдираем название файла
reUnix = /.*\/(.*)/;
fileTitle = fileTitle.replace(reUnix, "$1"); //выдираем название файла
fileType.innerHTML = fileTitle;

var RegExExt =/.*\.(.*)/;
var ext = fileTitle.replace(RegExExt, "$1");//и его расширение

var pos;
if (ext){
switch (ext.toLowerCase())
{
case 'doc': pos = '0'; break;
case 'bmp': pos = '16'; break;
case 'jpg': pos = '32'; break;
case 'jpeg': pos = '32'; break;
case 'png': pos = '48'; break;
case 'gif': pos = '64'; break;
case 'psd': pos = '80'; break;
case 'mp3': pos = '96'; break;
case 'wav': pos = '96'; break;
case 'ogg': pos = '96'; break;
case 'avi': pos = '112'; break;
case 'wmv': pos = '112'; break;
case 'flv': pos = '112'; break;
case 'pdf': pos = '128'; break;
case 'exe': pos = '144'; break;
case 'txt': pos = '160'; break;
default: pos = '176'; break;
};
fileType.style.display = 'block';
fileType.style.background = 'url(images/form/file_type_icons.png) no-repeat 0 -'+pos+'px';
};

};

После целого часа рассматривания монитора, я заметил что по паскалевским навыкам я объявляю переменные, а только потом их использую, рациональнее будет объявлять сразу когда нужна, ибо JS это умеет.
Ответить с цитированием