Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript打印动态代码,javascript根据参数添加了一个方法_Javascript - Fatal编程技术网

使用javascript打印动态代码,javascript根据参数添加了一个方法

使用javascript打印动态代码,javascript根据参数添加了一个方法,javascript,Javascript,我需要打印动态代码。我的想法是打印变量str中的内容,但带有X个“.parentElement” 我不知道使用eval是否是最好的,但我没有找到其他方法。反正对我也没用 function getElementByClasses(elementLength, className, e) { for (let i = 0; i <= elementLength; i++) { const x = '.parentElement'; const y = x.rep

我需要打印动态代码。我的想法是打印变量str中的内容,但带有X个“.parentElement”

我不知道使用eval是否是最好的,但我没有找到其他方法。反正对我也没用

function getElementByClasses(elementLength, className, e) {

  for (let i = 0; i <= elementLength; i++) {
    
    const x = '.parentElement';
    const y = x.repeat(i);
    
    const str = `
        if (e.target${y}.classList.contains(className)) {
            const elementWithClass = e.target${y};
       
            return elementWithClass;
        }
    `;
    eval(str);
  }
})
函数getElementByClass(elementLength,className,e){
对于(假设i=0;i对于您正在做的事情,我认为单独使用
。最接近的
会更好:

function getElementByClasses(elementLength, className, e) {
  const found = e.target.closest('.' + className)
  if (found) return found;
}
如果出于某种原因需要手动迭代父元素,并且需要将迭代的父元素数量限制为
elementLength
,则在导航到循环中的父元素时重新分配元素:

function getElementByClasses(elementLength, className, e) {
  let elm = e.target;
  for (let i = 0; i <= elementLength; i++) { // should this be <, not <= ?
    if (elm?.classList.contains(className)) {
      return elm;
    }
    elm = elm?.parentElement;
  }
}
函数getElementByClass(elementLength,className,e){ 设elm=e.target;
对于(设i=0;首先i,
eval()
是邪恶的,在99.99999%的用例中绝对不应该使用它,因为它会打开代码中的安全漏洞,并引入性能问题。其次,请澄清您正在尝试做什么,我需要打印动态代码对我们来说并没有多大意义。如果您可以编辑您的问题并包含相关的HTML和CSS,以便我们可以尝试运行代码并查看它的功能,这总是很有帮助的。不需要
eval
。只需访问循环中的嵌套属性。我认为您只需要一个循环。只需将
let elm=e.target
分配到循环外,如果
elm
不包含类,则执行
elm=elm.parentElement
uld imagine
elementLength
之所以被使用,是因为他们不太清楚,但谁知道呢。。。