比较特殊字符和变量javascript

时间:2014-09-24 09:54:33

标签: javascript special-characters

我有一个代码可以比较我得到的变量是否等于某个值。所以代码是这样的:

if (data[name] == '1222 €'){
     ResultField = ResultField + 'Beschrijving van de maningsprocedure:  : rekeningoverzichten  ' + '<br>';
}

问题是,我得到的是例如'1222 €'. '1222 €' == '1222 &euro;'是假的,所以它不会进入if。如果我把代码放在这样:

if (data[name] == '1222 €'){
     ResultField = ResultField + 'Beschrijving van de maningsprocedure:  : rekeningoverzichten  ' + '<br>';
}

由于特殊字符,代码甚至无法开始执行。那么我怎样才能使'1222 €' == '1222 &euro;'成为真的呢?

这是我正在使用的所有代码:

$(function() {
setTimeout(function() {
   DINK.utils.input.formula.add({
      path : 'IbanDrive/Newcollection/eurosymbol',
      types : {
      'IbanDrive/Newcollection/eurosymbol/FrequentieVanDeManingsprocedure' : 'text',
      'IbanDrive/Newcollection/eurosymbol/tijdstipVdagen' : 'text',
      'IbanDrive/Newcollection/eurosymbol/tijdstipVdagen2' : 'text',
      'IbanDrive/Newcollection/eurosymbol/tijdstipVdagen3' : 'text',
      'IbanDrive/Newcollection/eurosymbol/HeeftUDeLaatsteDrieJaarDebiteurenverliezenGeleden' : 'array',
      'IbanDrive/Newcollection/eurosymbol/empty' : 'text',
      'IbanDrive/Newcollection/eurosymbol/empty2' : 'text',
      'IbanDrive/Newcollection/eurosymbol/empty3' : 'text',
      'IbanDrive/Newcollection/eurosymbol/debiteuren' : 'text',
      'IbanDrive/Newcollection/eurosymbol/debiteuren2' : 'text',
      'IbanDrive/Newcollection/eurosymbol/debiteuren3' : 'text',
      'IbanDrive/Newcollection/eurosymbol/BeschrijvingVanDeManingsprocedure' : 'text',
      'IbanDrive/Newcollection/eurosymbol/ZoJaVoorWelkBedragAantalDebiteuren' : 'array',

      'IbanDrive/Newcollection/eurosymbol/testDim' : 'text'

     },
     names : {
      'IbanDrive/Newcollection/eurosymbol/testDim' : 'testDim'

      },
      change : {

      },
      anyChange : function(data) {
      var FrequentieVanDeManingsprocedure = 'IbanDrive/Newcollection/eurosymbol/FrequentieVanDeManingsprocedure';
      var tijdstipVdagen = 'IbanDrive/Newcollection/eurosymbol/tijdstipVdagen';
      var tijdstipVdagen2 = 'IbanDrive/Newcollection/eurosymbol/tijdstipVdagen2';
      var tijdstipVdagen3 = 'IbanDrive/Newcollection/eurosymbol/tijdstipVdagen3';
      var HeeftUDeLaatsteDrieJaarDebiteurenverliezenGeleden = 'IbanDrive/Newcollection/eurosymbol/HeeftUDeLaatsteDrieJaarDebiteurenverliezenGeleden';
      var empty = 'IbanDrive/Newcollection/eurosymbol/empty';
      var empty2 = 'IbanDrive/Newcollection/eurosymbol/empty2';
      var empty3 = 'IbanDrive/Newcollection/eurosymbol/empty3';
      var debiteuren = 'IbanDrive/Newcollection/eurosymbol/debiteuren';
      var debiteuren2 = 'IbanDrive/Newcollection/eurosymbol/debiteuren2';
      var debiteuren3 = 'IbanDrive/Newcollection/eurosymbol/debiteuren3';
      var BeschrijvingVanDeManingsprocedure = 'IbanDrive/Newcollection/eurosymbol/BeschrijvingVanDeManingsprocedure';
      var ZoJaVoorWelkBedragAantalDebiteuren = 'IbanDrive/Newcollection/eurosymbol/ZoJaVoorWelkBedragAantalDebiteuren';
      var testDim = 'IbanDrive/Newcollection/eurosymbol/testDim';


console.log('write this');

var dinkResultField = '';
if (data[FrequentieVanDeManingsprocedure] == 'wekelijks'){
     dinkResultField = dinkResultField + 'Frequentie van de maningsprocedure:: wekelijks' + '<br>';
}
if (data[FrequentieVanDeManingsprocedure] == '14 daags'){
     dinkResultField = dinkResultField + 'Frequentie van de maningsprocedure:: 14 daags' + '<br>';
}
if (data[FrequentieVanDeManingsprocedure] == 'maandelijks'){
     dinkResultField = dinkResultField + 'Frequentie van de maningsprocedure:: maandelijks' + '<br>';
}
if (data[HeeftUDeLaatsteDrieJaarDebiteurenverliezenGeleden] != undefined){
     if (data[HeeftUDeLaatsteDrieJaarDebiteurenverliezenGeleden].length != 0){
          dinkResultField = dinkResultField + 'Heeft u de laatste drie jaar debiteurenverliezen geleden ? : ';
          for (i = 0; i < data[HeeftUDeLaatsteDrieJaarDebiteurenverliezenGeleden].length; i++) {
               if (data[HeeftUDeLaatsteDrieJaarDebiteurenverliezenGeleden][i] == 'ja '){
                    dinkResultField = dinkResultField + 'ja   ';
               }
               if (data[HeeftUDeLaatsteDrieJaarDebiteurenverliezenGeleden][i] == 'nee'){
                    dinkResultField = dinkResultField + 'nee  ';
               }

          }
dinkResultField = dinkResultField + '<br>';
     }
}
if (data[ZoJaVoorWelkBedragAantalDebiteuren] != undefined){
     if (data[ZoJaVoorWelkBedragAantalDebiteuren].length != 0){
          dinkResultField = dinkResultField + 'Zo ja, voor welk bedrag + aantal debiteuren : ';
          for (i = 0; i < data[ZoJaVoorWelkBedragAantalDebiteuren].length; i++) {
               if (data[ZoJaVoorWelkBedragAantalDebiteuren][i] == 'jaar &#8211 1&euro;'){
                    dinkResultField = dinkResultField + 'jaar &#8211 1  ';
               }
               if (data[ZoJaVoorWelkBedragAantalDebiteuren][i] == 'jaar &#8211 2'){
                    dinkResultField = dinkResultField + 'jaar &#8211 2  ';
               }
               if (data[ZoJaVoorWelkBedragAantalDebiteuren][i] == 'jaar &#8211 3'){
                    dinkResultField = dinkResultField + 'jaar &#8211 3  ';
               }

          }
dinkResultField = dinkResultField + '<br>';
     }
}
if (data[BeschrijvingVanDeManingsprocedure] == 'rekeningoverzichten '){
     dinkResultField = dinkResultField + 'Beschrijving van de maningsprocedure:  : rekeningoverzichten  ' + '<br>';
}
if (data[BeschrijvingVanDeManingsprocedure] == 'telefonische maningen '){
     dinkResultField = dinkResultField + 'Beschrijving van de maningsprocedure:  : telefonische maningen    ' + '<br>';
}
if (data[BeschrijvingVanDeManingsprocedure] == 'ingebrekestelling '){
     dinkResultField = dinkResultField + 'Beschrijving van de maningsprocedure:  : ingebrekestelling    ' + '<br>';
}

data[testDim] = dinkResultField;

       },
      beforeSubmit : function(event, data, params) {
      var FrequentieVanDeManingsprocedure = 'IbanDrive/Newcollection/eurosymbol/FrequentieVanDeManingsprocedure';
      var tijdstipVdagen = 'IbanDrive/Newcollection/eurosymbol/tijdstipVdagen';
      var tijdstipVdagen2 = 'IbanDrive/Newcollection/eurosymbol/tijdstipVdagen2';
      var tijdstipVdagen3 = 'IbanDrive/Newcollection/eurosymbol/tijdstipVdagen3';
      var HeeftUDeLaatsteDrieJaarDebiteurenverliezenGeleden = 'IbanDrive/Newcollection/eurosymbol/HeeftUDeLaatsteDrieJaarDebiteurenverliezenGeleden';
      var empty = 'IbanDrive/Newcollection/eurosymbol/empty';
      var empty2 = 'IbanDrive/Newcollection/eurosymbol/empty2';
      var empty3 = 'IbanDrive/Newcollection/eurosymbol/empty3';
      var debiteuren = 'IbanDrive/Newcollection/eurosymbol/debiteuren';
      var debiteuren2 = 'IbanDrive/Newcollection/eurosymbol/debiteuren2';
      var debiteuren3 = 'IbanDrive/Newcollection/eurosymbol/debiteuren3';
      var BeschrijvingVanDeManingsprocedure = 'IbanDrive/Newcollection/eurosymbol/BeschrijvingVanDeManingsprocedure';
      var ZoJaVoorWelkBedragAantalDebiteuren = 'IbanDrive/Newcollection/eurosymbol/ZoJaVoorWelkBedragAantalDebiteuren';
      var testDim = 'IbanDrive/Newcollection/eurosymbol/testDim';


      }
    });
  }, 1300);

});

2 个答案:

答案 0 :(得分:1)

您需要使用DOM使浏览器呈现HTML,然后提取生成的纯文本。为此,您可以使用Strip HTML from Text JavaScript中解释的技术。基本上,您将HTML字符串注入假节点并从元素的HTML中调用textContentinnerText(较旧的Internet Explorer)。

不过,要注意空白,重音,大小写等方面的差异。


我不会说你的语言(荷兰语?)但你自己明确地生成了HTML:

dinkResultField = dinkResultField + 'Frequentie van de maningsprocedure:: wekelijks' + '<br>';

您的代码基本上构建了一个长HTML字符串。最有可能的是,你试图在稍后阶段解析它。只需以方便的格式存储数据。而不是:

var amount = "Total: 1234 &euro;";

......这样做:

var display = "Total: 1234 &euro;";
var amount = 1234;

答案 1 :(得分:0)

&euro;之类的符号是字符的HTML转义符,不应该在JavaScript中有效。使用字符本身,如data[name] == '1222 €'中所示,并确保已正确声明JavaScript文件的字符编码。实现此目的的一种简单方法是使用编辑器编写文件,该编辑器允许您将其以带有BOM 的UTF-8格式保存(因为BOM,字节顺序标记,用作字符编码的指示)。

如果出于某种奇怪的原因这是不可能的,请使用JavaScript escape,例如如在

data[name] == '1222 \u20AC'