2012-02-04 84 views
1

我想解析一个元素并设置区域的货币。美元符号的Javascript字符串

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"; 
     } 

及欧元正在努力,但日元和美元没有。有人有想法吗?

+6

为什么你在比较中有反斜杠? – 2012-02-04 20:58:40

回答

9

您正在使用相等比较==在您应该使用赋值运算符=的语句。

7

.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 
    
+0

如果你想捕获意想不到的输出,你可以在switch块中加入'else {area ='N/A';}','switch'块中加入'default:area ='N/A' var area = priceToArea [price] ||在散列法中'N/A'。 – 2012-02-04 21:09:59

+0

我想你错过了一个逗号这里'“$”:“北美洲” ' – ajax333221 2012-02-04 21:42:21

+0

@ ajax333221奈斯利斑点,现已修复。 – 2012-02-04 21:47:39

2

Rob W's answer我也将使用一个开关语句清晰:

switch (price) 
{ 
    case "€": 
    case "£": 
     area = "europe"; 
     break; 
    case "$": 
     area = "northamerica"; 
     break; 
    case "¥": 
     area = "asia"; 
     break; 
}