我如何使用 html 和 echo 将 onclick 函数添加到我的 php 代码中

学习者

所以我写了这段代码,我想在 img 中添加一个 onclick,问题是当我添加一个 onclick 时,我需要使用分号并且回声结束,我该怎么做?

php:

echo '<div id="cloth"> <img src="' . $row["Image_url"] . '" width="300" height="400" alt="' . $row["Name"] . '" style="margin: 15px;" id="' . $row["Name"] . '"></div>';

我想补充的是:

onclick="product('" . $row["name"] . "')"

我希望它看起来像这样:

echo '<div id="cloth"> <img src="' . $row["Image_url"] . '" width="300" height="400" alt="' . $row["Name"] . '" style="margin: 15px;" id="' . $row["Name"] . '" onclick ="product("' . $row["Name"] . '")"></div>'; 

js产品功能:

function product(id) {
    var title = document.getElementById(id);
    sessionStorage.setItem("title", id);
    window.location.replace("product.php");
}
阿戴森

看起来这个问题与分号完全无关。引号是你的问题。尝试

echo '<div id="cloth"> <img src="' . $row["Image_url"] . '" width="300" height="400" alt="' . $row["Name"] . '" style="margin: 15px;" id="' . $row["Name"] . '" onclick ="product(\'' . $row["Name"] . '\')"></div>';

因此,您将单引号放在 onclick 属性内(以与围绕它的双引号形成对比) - 这样浏览器就不会混淆哪一部分是属性,哪一部分是其中的硬编码字符串。

这将输出类似

<div id="cloth"> <img src="lfkgjdfg" width="300" height="400" alt="dfggkk" style="margin: 15px;" id="dfggkk" onclick ="product('dfggkk')"></div>

或者,停止使用内联点击属性,而是使用addEventListener创建不显眼的事件处理程序,这些事件处理程序不会弄乱您的 HTML,并将代码和标记分开——这通常会使代码更清晰、更可测试和更易于维护。

为了完成这项工作,需要对标记进行一些小的调整,以便 JS 可以识别元素,并在单击时从中收集正确的 name 属性。

注意:我假设您的页面中实际上可能有几个这样的图像,所以我使用一个类来识别所有应该可点击的图像,并将事件处理程序附加到所有这些图像:

PHP:

echo ' <img src="' . $row["Image_url"] . '" width="300" height="400" alt="' . $row["Name"] .'" style="margin: 15px ;" class="clothImg" data-name="' . $row["Name"] . '">'; JavaScript:

document.addEventListener('DOMContentLoaded', function() { //wait until page is fully loaded
  let images = document.querySelectorAll(".clothImg"); //find images
  images.forEach(function(img) {
    img.addEventListener("click", function() { //add click handler
      product(this.dataset.name); //get name and pass to product function
    });
  });
});

function product(name) {
    sessionStorage.setItem("title", name);
    window.location.replace("product.php");
}

使用 PHP 示例输出的现场演示:

document.addEventListener('DOMContentLoaded', function() { //wait until page is fully loaded
  let images = document.querySelectorAll(".clothImg"); //find images
  images.forEach(function(img) {
    img.addEventListener("click", function() { //add click handler
      product(this.dataset.name); //get name and pass to product function
    });
  });
});

function product(name) {
    console.log(name); //just for demo
    //sessionStorage.setItem("title", name);
    //window.location.replace("product.php");
}
<div id="cloth"> <img src="lfkgjdfg" width="300" height="400" alt="dfggkk" style="margin: 15px;" class="clothImg" data-name="dfggkk">
<img src="lblahvjhjkfg" width="300" height="400" alt="2222rd" style="margin: 15px;" class="clothImg" data-name="2222rd"></div>

相关文档:

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes


同样,您也可以停止使用内联高度、宽度和样式属性,而改用适用于整个元素类的 CSS 规则。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用CSS,JS和HTML将Google搜索面板添加到我的网站?

我如何使用css,js和html将google搜索面板添加到我的网站?

如何使用echo将php代码添加到数据图像中

如何将 onChange 添加到我的 onClick 函数?

如何将引导程序添加到我的网站到 html 代码

将表格添加到我的Dojo代码中

将.split添加到我的代码中

如何在Java中使用Itext将页眉和页脚添加到我的PDF中

如何使用 php 将当前日期添加到我的数据库表中

如何使用Javascript将元素目标添加到我的代码中

如何将“args=(...)”添加到我自己函数的参数中?

如何正确地将 setInterval/setTimeout 添加到我的函数中

自动将“标头”和“产生”属性添加到我的@RequestMapping中

如何使用php和html将订单项添加到表中

如何使用PHPMailer将HTML,CSS和PHP添加到电子邮件中?

为什么BeautifulSoup将<html> <body> <p>添加到我的结果中?

我正在努力将数组添加到我的 excuteread() 函数中

Codeigniter base_url() 将 index.php 添加到我的路径中

将Breadcrumbs php添加到我的Bootstrap导航栏中

将货币符号添加到我在 php 数组中输出的值

如何阻止tinymce将<!DOCTYPE html> <html> <head> </ head> <body>添加到我输入的所有内容中?

难以将动画添加到我的 html 附加

将数据添加到我的HTML MVC部分

Typescript .push 函数将空对象添加到我的数组中

无法将挂起的函数添加到我的 AlertDialog 中的 setOnClickListener

将 HTML 标记添加到存储在 php 变量中的值而不是 echo

如何将“回复”添加到我们从网站PHP表单获得的电子邮件中?

如何将数组添加到我的 php 变量中,循环不适用于数组

如何将newDataValidation()代码块添加到我的Google Apps脚本中