JavaScript - Uncaught TypeError: Cannot read property 'search' of undefined
JavaScript - Uncaught TypeError: Cannot read property 'search' of undefined
当我执行 Javascript 时,我收到了这个错误:
Uncaught TypeError: Cannot read property 'search' of undefined
而且我不知道如何修复它以及为什么显示它。
我在数组中有对象,
示例:
AsukohaArray = [{"Punkt":[[58.1056],[23.2589]],
"name":"Haapsalu Raamat",
"PunktiID": 23}];
我的代码
$(document).ready(function() {
$("input[type='search']").keyup(function() {
var searchTerm = $(this).val();
var myExp = new RegExp(searchTerm, "i");
var output = "<ul id='result'>";
$.each(AsukohaArray, function(key, val) {
//console.log(val.name);
if ((val.name).search(myExp) != -1) {
output += '<li>';
output += val.name;
output += '</li>';
}
});
console.log(output);
output += "</ul>";
$('div#update').html(output);
});
});
HTML
<ons-page id="my-page">
<ons-toolbar>
<div class="left">
<ons-toolbar-button ng-click="menu.toggleMenu()"><ons-icon icon="ion-navicon" style="font-size: 32px; width: 1em;"></ons-icon></ons-toolbar-button>
</div>
<div class="center">Kaardi vaade</div>
</ons-toolbar>
<div id="nupuriba">
<input type="search" class="search-input" id="#search">
</div>
<div id="update"></div>
<div id="map-canvas">
</div>
</ons-page>
当我插入 "Haapsalu" 时,结果是:
Haapsalu piiskopilinnus
哈普萨鲁艺术馆
哈普萨卢拉马特
未捕获的类型错误:无法读取未定义的 属性 'search'
我已经搜索了那个错误,但是没有结果,没有找到类似的东西。
你能试试吗
if(val.indexOf(myExp) != -1){
而不是
if(val.search(myExp) != -1){
您的 "val"(数组中的项目)是原始数据类型,还是包含属性 "name" 的对象?
如果你的 val 是一个 String 类型,你应该 "search" 直接进入它。
您的错误表明 "val" 不包含名为 "name".
的属性
此外,由于您使用的是正则表达式,因此您可能应该使用
if( val.match(myExp) > 0 )
甚至更好,如果您只关心布尔结果,
if ( val.test(myExp) )
如果我错了,而你的.name属性存在,如果是字符串,直接使用不带括号即可:
if( val.name.test(myExp) )
当我执行 Javascript 时,我收到了这个错误:
Uncaught TypeError: Cannot read property 'search' of undefined
而且我不知道如何修复它以及为什么显示它。
我在数组中有对象,
示例:
AsukohaArray = [{"Punkt":[[58.1056],[23.2589]],
"name":"Haapsalu Raamat",
"PunktiID": 23}];
我的代码
$(document).ready(function() {
$("input[type='search']").keyup(function() {
var searchTerm = $(this).val();
var myExp = new RegExp(searchTerm, "i");
var output = "<ul id='result'>";
$.each(AsukohaArray, function(key, val) {
//console.log(val.name);
if ((val.name).search(myExp) != -1) {
output += '<li>';
output += val.name;
output += '</li>';
}
});
console.log(output);
output += "</ul>";
$('div#update').html(output);
});
});
HTML
<ons-page id="my-page">
<ons-toolbar>
<div class="left">
<ons-toolbar-button ng-click="menu.toggleMenu()"><ons-icon icon="ion-navicon" style="font-size: 32px; width: 1em;"></ons-icon></ons-toolbar-button>
</div>
<div class="center">Kaardi vaade</div>
</ons-toolbar>
<div id="nupuriba">
<input type="search" class="search-input" id="#search">
</div>
<div id="update"></div>
<div id="map-canvas">
</div>
</ons-page>
当我插入 "Haapsalu" 时,结果是:
Haapsalu piiskopilinnus 哈普萨鲁艺术馆 哈普萨卢拉马特 未捕获的类型错误:无法读取未定义的 属性 'search'
我已经搜索了那个错误,但是没有结果,没有找到类似的东西。
你能试试吗
if(val.indexOf(myExp) != -1){
而不是
if(val.search(myExp) != -1){
您的 "val"(数组中的项目)是原始数据类型,还是包含属性 "name" 的对象? 如果你的 val 是一个 String 类型,你应该 "search" 直接进入它。 您的错误表明 "val" 不包含名为 "name".
的属性此外,由于您使用的是正则表达式,因此您可能应该使用
if( val.match(myExp) > 0 )
甚至更好,如果您只关心布尔结果,
if ( val.test(myExp) )
如果我错了,而你的.name属性存在,如果是字符串,直接使用不带括号即可:
if( val.name.test(myExp) )