Динамические совпадения с частичным поиском отображаются правильно, но по-прежнему не перехватываются TypeError: невозможно прочитать свойство «LID» неопределенного в HTMLFormElement

avatar
Eric Egana
1 июля 2021 в 19:47
20
0
0

Код javascript, который у меня есть, правильно отображает и обновляет частичные совпадения из массива, который я передаю, когда пользователь вводит текст в строку поиска. Итак, функциональность того, что я хочу, работает.

Но он отображает совпадения только тогда, когда у меня есть "console.log(allLIDsCodes[0]['LID']" внутри моей функции javascript. Это также работает, если вместо этого у меня есть другой порядковый номер ключа "Код", но это не сработает, если в console.log будет случайная строка, например "key".

Кроме того, хотя поиск и отображение результатов выполняются правильно, я все равно получаю эту ошибку в консоли. Есть идеи?

ошибка

searchLIDsCodes.js:21 Uncaught TypeError: Cannot read property 'Code' of undefined
    at HTMLFormElement.<anonymous> (searchLIDsCodes.js:21)
    at HTMLFormElement.dispatch (jquery-1.12.4.js:5226)
    at HTMLFormElement.elemData.handle (jquery-1.12.4.js:4878)
(anonymous) @ searchLIDsCodes.js:21
dispatch @ jquery-1.12.4.js:5226
elemData.handle @ jquery-1.12.4.js:4878

charts.php (нижняя часть)

               <!-- pass session arrays $allFIDs and $allLIDsCodes to javascript -->
                <script>
                    var js_$allFIDs = <?php echo json_encode($_SESSION['allFIDs']); ?>;
                    var js_$allLIDsCodes = <?php echo json_encode($_SESSION['allLIDsCodes']); ?>;
                </script>
                
                <!-- selector for exp fund chart -->
                <form  id="expLid" method="POST">
                    <input id="expLidInput" type="text" name="expLid" autofocus="autofocus"></input>
                    <input type="hidden" name="FID" value="<?php echo $FID; ?>"></input> <!-- $FID must be passed as hidden variable so that it can be appended to url in c_session.php file -->
                    <button type="submit">Set Exp Lid</button>
                    <br>
                    <!-- use this span element to display search results -->
                    <span id="searchLIDsCodesAppend"></span>
                </form>

        </div> <!-- page -->
        <script>
            onload=searchLIDsCodes(js_$allLIDsCodes);
        </script>
    </body>     
</html>

searchLIDsCodes.js

//#region
// http://jsfiddle.net/BeNdErR/f5use/5/

$(document).ready(function () {
    document.getElementById("expLidInput").addEventListener("keyup", searchLIDsCodes);
}); // end $(document).ready(function () {

function searchLIDsCodes(allLIDsCodes) {

    // start $("#expLid").on("keyup", function() {
    $("#expLid").on("keyup", function () {

        // *** search results don't display if I just have this
        // console.log("key");

        // *** search results display for either of these two lines but give the error in the console
        // console.log(allLIDsCodes[0]['LID']);
        console.log(allLIDsCodes[0]['Code']);

        $("#searchLIDsCodesAppend").empty();
        var searchValue = $("#expLidInput").val().toLowerCase();

        if(searchValue != ""){
            for(var x = 0; x < allLIDsCodes.length; x++){
                if((allLIDsCodes[x]['LID'].indexOf(searchValue) == 0 ) || (allLIDsCodes[x]['Code'].toLowerCase().indexOf(searchValue) == 0 )){
                    $("#searchLIDsCodesAppend").append(allLIDsCodes[x]['LID'] + " " + allLIDsCodes[x]['Code'] + "<br>");
                } // end if((allLIDsCodes[x]['LID'].indexOf(searchValue) == 0 ) || (allLIDsCodes[x]['Code'].toLowerCase().indexOf(searchValue) == 0 )){

            } // end for(var x = 0; x < allLIDsCodes.length; x++){

        } // end if(searchValue != ""){

    }); // end $("#expLid").on("keyup", function () {

}; // end function searchLIDsCodes(allLIDsCodes) {

//#endregion
Источник

Ответы (0)