簡體   English   中英

函數未返回值-未定義

[英]Function not returning the value - undefined

確實建立了一個函數來從一組元素中返回元素的索引。 但是,當我嘗試將值傳遞給另一個變量(myindex)時,我的確不確定。

這里的Javascript源代碼

$(document).ready(function(){
             $("[id*='_CG']").addClass("form-control input-sm text-right");
    $("[id*='_Weight']").addClass("form-control input-sm text-right");
    $("[id*='TXFuelWeight']").addClass("form-control input-sm text-right");
    $("[id*='TRPFuelWeight']").addClass("form-control input-sm text-right");

      myindex = GetLSElementIndex("[id*='W_OP_']", "W_OP_CAB1Items");
alert (myindex);

            });
 // Get the index element in a group of element
 function GetLSElementIndex(ElementGroup, Element) {
    $(ElementGroup).each(function (index) {
        var someText = $(this).attr('id');
        if (someText == Element) {
            alert(someText);
            alert(index);
            //GetLSElementIndex = index;
            //alert(GetLSElementIndex);
            return ;
            //return index;

        }


    });

}

您需要這樣使用:

var indx;
if (someText == Element) {
    alert(someText);
    alert($('#'+Element).index());//Don't do just alert(index)
    indx = $('#'+Element).index();//I need to find index of ? #W_OP_CAB1Items
     return indx;
  }
function GetLSElementIndex(ElementGroup, Element) {
    var value = -1; //If no element is found, index is assumed to be -1
    $(ElementGroup).each(function (index) {
        var someText = $(this).attr('id');
        if (someText == Element) {
            alert(someText);
            value = index;
            alert(value);
            return false;//To break out of each() once the index is found.
        }
    });
    return value; //Return the value (from the called fn) once the processing is done

}

返修您GetLSElementIndex通過定義該方法一個全局變量的方法像這樣與該索引分配each循環到並返回它,然后把return語句出的each循環。

演示: FIDDLE

// Get the index element in a group of element
    function GetLSElementIndex(ElementGroup, Element) {
        var setIndex;
        $(ElementGroup).each(function (index) {
            var someText = $(this).attr('id');
            setIndex = index;
            if (someText == Element) {
                alert(someText);
                alert(index);
            }
        });
        return setIndex;
    }

注意:此方法僅返回each循環的最后一項的索引。

您必須打破“每個jQuery”,然后返回索引。 混亂點是“ jQuery每次”被“ return false”語句破壞。 您必須將索引值存儲在某些局部變量中(以下函數中的var toReturn ..)。 這是為您修改的GetLSElementIndex函數

 // Get the index element in a group of element
 function GetLSElementIndex(ElementGroup, Element) {
   var toReturn; 
    $(ElementGroup).each(function (index) {
        var someText = $(this).attr('id');

       if (someText == Element) {
            //alert(someText);
           // alert(index);
            toReturn= index;
            //GetLSElementIndex = index;
            //alert(GetLSElementIndex);
            return  false ;
            //return index;

        }

    });
     return toReturn;

} 

有關更多詳細信息,請關注其他堆棧溢出問題

更新您的函數以將所需元素的索引存儲在變量中,然后返回該變量。

function GetLSElementIndex(ElementGroup, Element) {
   var elementIndex;/* store the index of #element here */  
   $(ElementGroup).each(function (index) {
       var someText = $(this).attr('id');
       if (someText == Element) {
           elementIndex = index;
       }
   });
   return elementIndex; /* will return index of #element if found otherwise will return undefined */
}

我已刪除所有警報,因為我認為這些警報是出於調試目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM