html 如何在字符串中执行函数

2nc8po8w  于 11个月前  发布在  其他
关注(0)|答案(3)|浏览(86)

这是我的代码

function render(img, name, price) {
        var row = `
            <a class="ProductCard" href="#" onclick="page('${numberFolder}')">
            <img src="${img}">
            <h1>${name}</h1>
            <p>${price}</p>
            </a>
        `;
    document.querySelector('#main').insertAdjacentHTML('beforeend', row);
    }

字符串
我想执行page()函数,但我不能,JavaScript检测到它是一个新函数,因为它在字符串中。当我检查错误时,我得到这个
未捕获的引用错误:页面未在HTMLAnchorElement.onclick定义
这是page()函数(尚未完成)

function page(folderNum){
    rowOrder = `HTML-HERE`
    const productDetails = database.ref(`/products/${folderNum}`);
    productDetails.on('value', (snapshot) => {
    const details = snapshot.val();
    console.log(details)
   })
}

clj7thdc

clj7thdc1#

我怀疑当您单击添加的内容时,您的page函数不在范围内。因为如果它被正确地放置,这种技术应该可以很好地工作,如下面的代码片段所示:

function render(title, value) {
   const row = `
     <div>
       <a class="ProductCard" href="#" onclick="page('${value}')">
         <p>${title}: ${value}</p>
       </a>
     </div>`;
    document.querySelector('#main').insertAdjacentHTML('beforeend', row);
}

function page(x) {
  alert(x)
}

render ('Meaning of life', 42)
render ('Bottles of beer', 99)

个字符

drkbr07n

drkbr07n2#

要在JavaScript中执行字符串中的函数,可以使用eval()函数。但是,在使用eval()时必须谨慎,因为如果与不受信任的或用户生成的数据一起使用,则可能会引入安全风险。

rm5edbpk

rm5edbpk3#

选择a标记,例如:let aTag = row.children[0] .比你能做的:aTag.onclick = () => page('${numberFolder}')。这可能是最安全的方法。对于固定和更改验证代码,您可以通过查询类名来选择aTag。
编辑:你不需要在文本中定义函数,你真的不应该。

相关问题