У меня есть следующий бит кода (с использованием JQuery), который я написал для проекта. Идея состоит в том, чтобы иметь функцию, которую вы можете присоединить к элементу в div «item», и он вернет идентификатор этого div. В этом случае идентификатор div будет item- [значение первичного ключа какого-либо элемента]. Эта функция работает, вероятно, 9/10 раз, но каждый раз она переходит в else else и возвращает false. Я проверил через консоль, что вход для селектора является тем же самым элементом JQuery $() как в случае успеха, так и в случае сбоев.Функция JavaScript работает только с одним и тем же входом
Я относительно новичок в JavaScript, так что может быть что-то очевидное, что мне не хватает, но это действительно необычное поведение.
var recursionCounter = 0;
function getElementID(selector, recursionDepth, searchString){
console.log(selector);
var elementID = selector.attr("id");
if(elementID === undefined){
elementID = "";
}
if(elementID.indexOf(searchString) !== -1){
elementID = elementID.split("-")[1];
return elementID;
} else {
if(recursionCounter < recursionDepth){
recursionCounter++;
return getElementID(selector.parent(), recursionDepth, searchString);
} else {
recursionCounter = 0;
alert("The element clicked does not have an associated key.");
return false;
}
}
}
Вот пример кода, который вызывает эту функцию для некоторого контекста.
$(document).on("click", ".edit-pencil-item", function(event) {
//Use helper function to get the id of the surrounding div then pass it to the function
var itemID = getElementID($(this), 10, "item-");
jsEditItem(itemID);
return false;
});
Заранее благодарим за любую помощь!
Может также помочь html. – DrCord
Вы можете заменить большинство из них вызовом '.closest()' вероятно. – Pointy
Зачем так голосует такой вопрос? Что здесь отсутствует или неясно или неполно и т. Д. И т. Д. Здесь? –