我正在尝试修改prestashop移动导航并且遇到了一些困难
尝试使用包含主要类别标题的新元素附加子类别列表。标题写成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 :(得分:3)
原因在于此退货声明:
a
parentTitle
代码和class
之间有两个优势。删除其中一个。
顺便说一下,我在任何地方都看不到class
。请注意,命名变量$(this).text().toString()
可能会导致意外行为,因为它是JS中的保留字。
我还会将$(this).text()
替换为.toString()
,因为var imageArray = [];
var imagesFiles = ['home_16.png', 'home_16_done.png', 'not existing.png'];
function preLoadImages(callback) {
var filesCount = imagesFiles.length;
for (var i = 0; i < imagesFiles.length; i++) {
var imageObj = new Image();
imageObj.src = '/images/' + imagesFiles[i];
imageObj.name = imagesFiles[i];
imageObj.onload = (function (img) {
imageArray.push({ name: img.target.name, object: img.target });
filesCount--;
if (filesCount === 0) {
if (callback)
callback(imageArray);
}});
imageObj.onerror = function () { //even image is not loaded
filesCount--;
if (filesCount === 0) {
if (callback)
callback(imageArray);
}};
}
}
....
pushpin = new Microsoft.Maps.Pushpin(location,
{ icon: createCanvasContent(imageArray[i], parameters[])
.....
function createCanvasContent(img, parameters){
var c = document.createElement('canvas');
c.width = img.width + 2;
c.height = img.height + 2;
var context = c.getContext('2d');
context.fillStyle = bgrcolor;
context.fillRect(0, 0, 18, 18);
c.style.opacity = '0.8';
//Draw image
context.drawImage(img, 1, 0, c.width - 2, c.height - 2);
return c.toDataURL();
}
无用。