Почему javascript IF работает только один раз? - PullRequest
1 голос
/ 08 апреля 2010

У меня есть код JavaScript, который копирует значение входного файла и вставляет его в текстовое поле в режиме реального времени.

<script>
function copyit(){

var thephoto=document.getElementById('thephoto').value;
var fileonchange=document.getElementById('fileonchange').value;

if(!thephoto==fileonchange){
document.getElementById('fileonchange').value=thephoto;
}

}

window.setInterval("copyit()", 500);  
</script>

Choose File : <input type="file" id="thephoto"><br>
Here Is the file name : <input type="text" id="fileonchange">

К сожалению, это работает только один раз, а затем перестает вставлять значение при повторном изменении файла. (я имею в виду, вы должны перезагрузить страницу, чтобы снова заработать)

У IF есть кеш или что-то? Вы можете попробовать код самостоятельно, чтобы увидеть.

Спасибо всем

Ответы [ 5 ]

8 голосов
/ 08 апреля 2010

Синтаксис неверен. Вам нужен оператор != для обозначения неравенства:

if (thephoto != fileonchange) {

!thephoto фактически инвертирует свое логическое представление (т.е. true становится false и наоборот, null становится true). == фактически сравнивает равенство обоих операндов.

2 голосов
/ 08 апреля 2010

Попробуйте изменить строку IF на:

if(thephoto!=fileonchange){
1 голос
/ 08 апреля 2010

Элемент ввода, как говорит W3C, принимает метод onchange. Почему бы тебе не сделать:

<input type="file" id="thephoto" onchange="copyit()">

Вместо использования страшного setInterval?

1 голос
/ 08 апреля 2010

BalusC совершенно прав, но ИМХО использовать таймер каждые 500 мс для выполнения этой простой задачи кажется довольно тяжелым.

Почему бы вам просто не использовать onchange событие <input type="file" /> ?, например ::

window.onload = function () {
  var thephoto = document.getElementById('thephoto');
  var fileonchange = document.getElementById('fileonchange');

  thephoto.onchange = function () {
    // this function will be executed when the user changes the file
    fileonchange.value = this.value;
  };
};

Проверьте приведенный выше пример здесь .

0 голосов
/ 08 апреля 2010

Используйте !== для строгого неравенства.

Или, если вы хотите использовать что-то похожее на синтаксис, который вы написали, сделайте следующее:

if(!(thephoto==fileonchange)){

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...