![](/img/trans.png)
[英]how to solve Uncaught TypeError: Cannot convert undefined or null to object
[英]Uncaught TypeError: Cannot convert undefined or null to object
我在使用我的函數之一時遇到問題。在哪一行出現錯誤: Uncaught TypeError: Cannot convert undefined or null to object
。
function hexConvert(colorval) {
var parts = colorval.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
delete(parts[0]); //The error is in this line
for (var i = 1; i <= 3; ++i) {
parts[i] = parseInt(parts[i]).toString(16);
if (parts[i].length == 1) parts[i] = '0' + parts[i];
}
color = '#' + parts.join('');
}
var btn = $(".btn-3d");
btn.each(function(index, elem) {
var bgColor = $(this).css('backgroundColor');
hexConvert(bgColor);
$(this).css({
'box-shadow': '0px 4px 0px 0px' + ColorLuminocity(color, -0.1)
});
});
有人可以幫我加分嗎?
match
可以返回null
(如果沒有匹配項),但是在調用delete(parts[0]);
之前不會檢查是否發生了這種情況delete(parts[0]);
這是我不清楚你為什么要刪除返回數組(我可能會使用該類型shift
),但如果你(或如果您使用shift
),你需要一個null
后衛:
function hexConvert(colorval) {
var parts = colorval.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
if (!parts) { // <====
color = null; // <====
return; // <====
} // <====
delete parts[0]; // <==== `delete` isn't a function, no need for parens
for (var i = 1; i <= 3; ++i) {
parts[i] = parseInt(parts[i]).toString(16);
if (parts[i].length == 1) parts[i] = '0' + parts[i];
}
color = '#' + parts.join('');
}
然后當您使用它時:
hexConvert(bgColor);
if (color) {
$(this).css({
'box-shadow': '0px 4px 0px 0px' + ColorLuminocity(color, -0.1)
});
}
旁注:這是一個非常不好的主意,要讓hexConvert
與全局變量hexConvert
工作。 而是讓它返回結果:
function hexConvert(colorval) {
var parts = colorval.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
if (!parts) { // <====
return null; // <====
} // <====
delete parts[0]; // <==== `delete` isn't a function, no need for parens
for (var i = 1; i <= 3; ++i) {
parts[i] = parseInt(parts[i]).toString(16);
if (parts[i].length == 1) parts[i] = '0' + parts[i];
}
return '#' + parts.join('');
}
然后當您使用它時:
var color = hexConvert(bgColor);
if (color) {
$(this).css({
'box-shadow': '0px 4px 0px 0px' + ColorLuminocity(color, -0.1)
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.