JavaScript - 未捕获的TypeError:无法读取属性' search'未定义的

时间:2015-04-26 14:14:55

标签: jquery onsen-ui

当我执行我的Javascript时,我收到此错误:

  

未捕获的TypeError:无法读取属性'搜索'未定义的

而且我不知道如何修复它以及为什么要显示它。

我在数组中有对象,

示例:

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>

当我插入&#34; Haapsalu&#34;然后结果是:

Haapsalu piiskopilinnus Haapsalu Kunstikool Haapsalu Raamat 未捕获的TypeError:无法读取属性&#39;搜索&#39;未定义的

我搜索了这个错误,但没有结果,没有发现任何相似之处。

2 个答案:

答案 0 :(得分:1)

你的&#34; val&#34; (数组中的项)原始数据类型,或者是包含属性&#34; name&#34;?的对象 如果你的val是一个字符串类型,你应该&#34;搜索&#34;直接进入它。 你的错误表明&#34; val&#34;不包含名为&#34; name&#34;。

的属性

此外,由于您使用的是RegExp,因此您应该使用

if ( val.test(myExp) )

甚至更好,如果你只关心布尔结果,

if( val.name.test(myExp) )

如果我错了,你的.name属性存在,如果它是一个字符串,只需直接使用它而不用括号:

players

答案 1 :(得分:0)

你能试试吗

   if(val.indexOf(myExp) != -1){

而不是

   if(val.search(myExp) != -1){