【发布时间】:2021-02-19 23:55:21
【问题描述】:
我想组合一个对象、一个变量中的路径和一个路径,类似于https://stackoverflow.com/a/43849204/14480225 中解释的内容,但带有 3 个“部分”。
这是最小的可重现示例:
我希望 combine() 函数根据 bar 值打印 selector[0].children[foo].textContent 或 selector[0].children[foo].children[0].textContent。
const selector = document.getElementsByClassName('main')
const foo = 0
let bar = ''
const toggle = () => {
if (bar === '') bar = '.children[0]'
else bar = ''
}
const test = () => {
console.log(combine('selector[0].children[foo]', bar, '.textContent'))
//I want a function like combine() that will print 'selector[0].children[foo].textContent' or 'selector[0].children[foo].children[0].textContent' depending on bar value.
}
<div class='main'>
<h1>Hello<span>world</span></h1>
<button onclick='toggle()'>toggle</button>
<button onclick='test()'>test</button>
</div>
我有一个返回多个相似属性的类 (10)。我的构造函数输入了一个值,该值可用于确定最小示例中的 bar 之类的内容。通过在最小示例中更改 bar 之类的内容,每个属性都可以获得预期的输出。
我希望这样的东西能够在不同的案例之间切换,而不必为每个 bar 案例编写大量的开关,因此需要大量的代码重复。
【问题讨论】:
-
@ikiK - 这就是 OP 希望你为他们写的 ;-); OP 让我们阅读一本 12 页的小说(另一个问题),所以它们可以简明扼要,我猜想省略细节。例如,在代码中,Op 通过
selector[0].children同时声明“在我自己的代码中”selector.children- 所以,OP 是否在“我的代码中”使用不同的选择器 - 我们不知道。 -
这听起来像 XY Problem 。没有描述要解决的问题,除了可以执行我想要的代码。 OP 应该定义问题,而不是规定如何编写解决方案。
-
好吧,我试过了,我问了最终结果,所以我除了得到 if
xthen?ifythen?。应该清楚之后判断HTML。但我没听懂……@RandyCasburn -
我明白了,感谢您的尝试。但是问题不在于生成可以用作从元素获取文本的方式的字符串,比如说。看起来问题陈述可能是这样的:给定选择器和选择器的哪个子项以及要检索的属性名称,生成一个接受这些参数并返回属性值的函数。是这样的吧?
-
@RandyCasburn 是的,明白了
标签: javascript string typescript object