我是否错过了什么,或者这种行为对于"if 语句"来说很奇怪?



我不能从函数返回值。没有什么花哨或复杂的。我只需要遍历我的HTMLElements并返回我需要的那个。

这是我第一次想到它,我花了很多时间修改代码并尝试以不同的方式返回它,或者至少理解它不起作用的原因。

我将不胜感激任何帮助和您的理解。

下面的代码片段包括我从使用RXjs - fromEvent调用的事件侦听器调用的函数

我相信代码本身非常明确,但如果您需要更多信息,我将包含我的整个代码。

function findElementByDataValue(target: EventTarget, data: {key: string, value: string}){
// trying to return by a function
function send(element) {
return element;
}
if(target && target.dataset){
if(target.dataset[data.key] === data.value) {
// console.log(target);
// send(target);
return target;
} else {
if(target.children){
for (const child in Object.entries(target.children)) {
const element = target.children[child];
findElementByDataValue(element, data);
}
}
}
}
}

这是StackBlitz上的完整代码

*Invoking the function on line:*65*Function on line:*34

如果找到某些内容,则返回findElementByDataValue调用,否则在else中,递归调用不会执行任何操作:

function findElementByDataValue(target: EventTarget, data: {key: string, value: string}){
// trying to return by a function
function send(element) {
return element;
}
if(target && target.dataset){
if(target.dataset[data.key] === data.value) {
// console.log(target);
// send(target);
return target;
} else {
if(target.children){
for (const child in Object.entries(target.children)) {
const element = target.children[child];
const result = findElementByDataValue(element, data);
if (result) {
return result;
}
}
}
}
}
}

最新更新