Знак доллара в строке Javascript - PullRequest
1 голос
/ 05 февраля 2012

Я хочу проанализировать элемент и установить область по валюте.

HTML:

<span id="price">¥82,84</span><br/>

Javascript:

        price = document.getElementById("price").innerHTML;
        price = price.slice(0,1);

        if(price == "€")
        {
            area = "europe";
        }
        if(price == "£")
        {
            area = "europe";
        }
        if(price == "\$")
        {
            area == "northamerica";
        }
        if(price == "\¥")
        {
            area == "asia";
        }

Евро и фунты работают, а йена и доллар - нет. У кого-нибудь есть идея?

Ответы [ 3 ]

9 голосов
/ 05 февраля 2012

Вы используете сравнение равенства == в операторах, где вы должны использовать оператор присваивания =.

7 голосов
/ 05 февраля 2012

.innerHTML может возвращать объекты HTML &dollar;.Вместо этого используйте .textContent или .innerText.Кроме того, поскольку price не может быть двумя разными символами, я предлагаю использовать вложенные else if с вместо нескольких if с.

Сама ошибка находится в блоках доллара и юаня: вы используете== вместо простого =.

    price = document.getElementById("price").textContent; // or innerText for IE
    price = price.charAt(0); // equal to .slice(0,1);

    if(price == "€") {
        area = "europe";
    } else if(price == "£") {
        area = "europe";
    } else if(price == "$") {
        area = "northamerica";
    } else if(price == "¥") {
        area = "asia";
    } else { // Default
        area = "Unknown";
    }

Существует два других метода:

  • Блоки переключения:

    switch(price) {
       case '€': case '£':
           area = 'europe';
       break;
       case '$':
           area = 'northamerica';
       break;
       case '¥'
           area = 'asia';
       break;
       default:
           area = 'unknown';
    }
    
  • Хэши:

    var price = document.getElementById("price").textContent; //or innerText (IE)
    price = price.charAt(0);
    var priceToArea = {
         '€': 'europe',
         '£': 'europe',
         '$': 'northamerica',
         '¥': 'asia'
    };
    var area = priceToArea[price] || 'Unknown'; //Default Unknown
    
2 голосов
/ 05 февраля 2012

В дополнение к ответ Роба В. Для ясности я бы также использовал оператор переключения:

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