2017-04-20 46 views
0

我試圖修改prestashop移動導航,並且遇到了一些困難 嘗試在子類別列表中添加包含主類別標題的新元素。標題被寫爲NaN。

代碼:jQuery .text()方法返回在其他函數中轉換爲NaN

$('#maincategories > li').children('a').each(function() { 

     //here i remove original navigation icons so they wont get into title String. 
     $(this).children('span').remove(); 
     var str = $(this).text().toString().replace(" ",""); 

     var generateSubmenuTrigger = function(action) { 
      if (action == 'show') { 
       var triggerClass = 'showSubnav', 
       var parentTitle = ""; 
      } else if (action == 'hide') { 
       var triggerClass = 'hideSubnav'; 
       var parentTitle = str; 
      }; 
      return '<a class="msubnav '+ class +'">'+ 
         +parentTitle+ 
        '</a>'; 
     }; 

     $(this).parent('li').append(generateSubmenuTrigger('show')); 
     $(this).parent('li').children('div').children('ul').append(generateSubmenuTrigger('hide')) 
    }); 

我一直在使用檢查的console.log parentTitle字符串,而這一切是好的,直到我把它在我的generateSubmenuTrigger函數內。如果有人能夠解釋爲什麼它變成NaN以及如何解決它,那將是非常好的。

+0

限定 變種triggerClass 變種parentTitle 外面如果條件 以及在 '返回' '+ +parentTitle+ '「; 用triggerClass替換類 – Knitesh

+0

在返回行中回覆parentTitle,在發佈問題前重寫某些類時錯過了它。感謝您的建議,現在就試試吧。 –

+0

添加必要的html。 – Mamun

回答

3

的原因是在這個return語句:

 return '<a class="msubnav '+ class +'">'+ 
        +parentTitle+ 
       '</a>'; 

您在a標籤和parentTitle之間有兩個加號。刪除其中一個。

順便說一下,我沒有看到任何地方定義的class。請注意,命名變量class可能會導致意外的行爲,因爲它是JS中的保留字。

我也會用$(this).text()代替$(this).text().toString(),因爲無論如何.toString()是無用的。

+0

謝謝,現在都很好。類在生產中沒有'class'變量,我在提出問題之前重構代碼時混淆了一些變量標題。這個.text()。toString()只是爲了確保它被保存爲字符串,這個NaN讓我變得很糟糕。 –