Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.09.2015, 09:35
Аспирант
Отправить личное сообщение для mrbanan Посмотреть профиль Найти все сообщения от mrbanan
 
Регистрация: 28.08.2015
Сообщений: 40

Почему работает только первый if?
Русские буквы преобразую в коды символов, остальные потом обратно в самих себя.
<script>
      html = "<html><head>АаБб</head></html>";
      longtext = html.length;
      console.log(longtext);
    
    var arr = new Array();
    var code = new Array();
    for (i = 0; i < longtext; i++) {
        
      arr[i] = html.charCodeAt(i);
      
      if(1039 < arr[i] < 1072){
         code[i] = '['+arr[i]+']'; console.log("1 if");
      }
      else if(arr[i] == 1025){
        code[i] = '['+arr[i]+']'; console.log("2 if");
      }
      else if(arr[i] == 1105){
        code[i] = '['+arr[i]+']'; console.log("3 if");
      }
      else if(1071 < arr[i] < 1104){
        code[i] = '['+arr[i]+']'; console.log("4 if");
      }
      else{
        code[i] = html.charAt(i); console.log("other if");
      }

    }
</script>

Ответ на каждый символ 1 if т.е. всегда выполняется только первое условие. Почему?
Ответить с цитированием
  #2 (permalink)  
Старый 19.09.2015, 10:02
Кандидат Javascript-наук
Отправить личное сообщение для sortarray Посмотреть профиль Найти все сообщения от sortarray
 
Регистрация: 19.09.2015
Сообщений: 117

В логику не вникал, но сомневаюсь, что такой синтаксис поддерживается, там скорей всего слабая типизация *работает*
alert(100>2>1)

//>>>> false
Ответить с цитированием
  #3 (permalink)  
Старый 19.09.2015, 10:20
Кандидат Javascript-наук
Отправить личное сообщение для sortarray Посмотреть профиль Найти все сообщения от sortarray
 
Регистрация: 19.09.2015
Сообщений: 117

Возможно вот такое решение подойдет
string="<html><head>АаБб</head></html>"
re=/[а-яё]/i
alert(
string.split("").map(function(symbol, i){if(re.test(symbol)) return string.charCodeAt(i); return symbol}).join("")
)

Последний раз редактировалось sortarray, 19.09.2015 в 10:26.
Ответить с цитированием
  #4 (permalink)  
Старый 19.09.2015, 14:24
Аспирант
Отправить личное сообщение для mrbanan Посмотреть профиль Найти все сообщения от mrbanan
 
Регистрация: 28.08.2015
Сообщений: 40

Да я кстати думал о чём-то таком, более изящном, сегодня попробую, спасибо!
Ответить с цитированием
  #5 (permalink)  
Старый 19.09.2015, 14:50
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от mrbanan
1039 < arr[i] < 1072
Сначала будет проверка 1039 < arr[i], выдаст true или false, потом этот true/false < 1072.

Надо так:
1039 < arr[i] && 1072 > arr[i]
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему не работает функция? sana Общие вопросы Javascript 5 01.04.2015 17:53
Почему скрипт работает только в Опере? evgenij-1963 (X)HTML/CSS 6 23.03.2013 17:14
Скрипт работает только если подключать js в самом низу html! Pekkonen jQuery 3 26.01.2011 01:44
Анимация. Помогите понять почему не работает. kadurban jQuery 4 08.07.2010 20:50
Почему это работает? (инклуд JS в JS) Василий Б. Общие вопросы Javascript 4 11.06.2010 12:41