为什么Javascript不能与Django HTML一起使用?
我试图在我的Django网站中添加一些javascript代码。javascript代码应该检查按钮是否被按下,并在按钮被按下时提醒用户。但是,这仅适用于第一个按钮。因为我在所有按钮上循环显示它们,所以我认为javascript没有将其视为HTML代码。下面是javascript代码为什么Javascript不能与Django HTML一起使用?,javascript,html,django,Javascript,Html,Django,我试图在我的Django网站中添加一些javascript代码。javascript代码应该检查按钮是否被按下,并在按钮被按下时提醒用户。但是,这仅适用于第一个按钮。因为我在所有按钮上循环显示它们,所以我认为javascript没有将其视为HTML代码。下面是javascript代码 const card = document.querySelector('.card'); card.addEventListener('click', e => { if (e.target.clas
const card = document.querySelector('.card');
card.addEventListener('click', e => {
if (e.target.classList.contains('btn')) {
alert('hi')
}
})
以下是HTML/Django代码:
{% extends "/Users/marco/Documents/codes/Python/Django/vracenmasse/templates/base_generic.html" %}
{% load static %}
{% block content %}
<center><h1>Nos Produits</h1></center>
<hr>
<div class="row" style = "border: 50px solid white;">
{% for product in products %}
<div class="card" style="width: 18rem;">
<img class="card-img-top" src="../../../media/{{ product.product_picture.name }}" alt="{{ product.product_picture.name }}">
<div class="card-body">
<center>
<h5 class="card-title">{{ product.name }}</h5>
<p class="card-text">{{ product.product_price|floatformat:2 }}$ / unité</p>
<p class="card-text">Catégorie : {{ product.type_of_product }}</p>
{% if product.new_product == "yes" %}
<b><p class="card-text"><font size="3.5" color="Orange">Nouveaux!</font></p></b>
{% endif %}
{% if product.availability == "Out Of Stock"%}
<b><p class="card-text"><font size="1.5" color="red">En rupture de stock</font></p></b>
<hr>
<button type="button" class="btn btn-primary" disabled>Ajouter au Panier</button>
{% else %}
<p style="font-size:15;">Quantité : </p><input type="number" step="12" min="0" />
<span class="validity"></span>
<hr>
<button type="button" class="btn btn-outline-primary" id='realbutton'>Ajouter au Panier</button>
{% endif %}
<div class="alert alert-success alert-dismissible fade show" role="alert" style ="visibility:hidden;">
<center>Produit ajouté au panier!</center><button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
</center>
</div>
</div>
{% endfor %}
</div>
</div>
<script src="{% static "products/buttonalerts.js" %}"></script>
{% endblock %}
{%extends”/Users/marco/Documents/codes/Python/Django/vracenmasse/templates/base_generic.html“%}
{%load static%}
{%block content%}
无产品
{products%中产品的%s}
{{product.name}
{{product.product_price | floatformat:2}}$/unité
Catégorie:{{product.type_of_product}
{%if product.new_product==“yes”%}
Nouveaux
{%endif%}
{%if product.availability==“缺货”%}
取消库存
阿霍帕尼尔酒店
{%else%}
数量:
阿霍帕尼尔酒店
{%endif%}
普罗杜特·阿约特·帕尼尔!
&时代;
{%endfor%}
{%endblock%}
第一个按钮是唯一有效的。我们可以在第6行看到for循环。它迭代所有产品,并添加自己的“添加到购物车”按钮。不过,警报只对第一个按钮有效。谢谢。问题是您正在为列表中的每个产品创建一个“div”元素,但是querySelector()方法只返回具有指定类的第一个元素 您需要使用querySelectorAll()方法获取包含所有元素的列表,然后将事件侦听器应用于每个元素:
const cards = document.querySelectorAll('.card');
for (let i = 0; i < cards.length; i++) {
cards[i].addEventListener('click', e => {
if (e.target.classList.contains('btn')) {
alert('hi')
}
}
)
const cards=document.queryselectoral('.card');
for(设i=0;i{
if(e.target.classList.contains('btn')){
警报(“嗨”)
}
}
)
另一种解决方案是直接查询包含“btn”类的元素,并将事件侦听器添加到这些元素中:
const buttons = document.querySelectorAll(".btn");
for (let i = 0; i < buttons.length; i++) {
buttons[i].addEventListener('click', function() {
alert('hi');
}
)
const buttons=document.queryselectoral(“.btn”);
对于(设i=0;i
问题在于,您正在为列表中的每个产品创建一个“div”元素,但querySelector()方法仅返回具有指定类的第一个元素
您需要使用querySelectorAll()方法获取包含所有元素的列表,然后将事件侦听器应用于每个元素:
const cards = document.querySelectorAll('.card');
for (let i = 0; i < cards.length; i++) {
cards[i].addEventListener('click', e => {
if (e.target.classList.contains('btn')) {
alert('hi')
}
}
)
const cards=document.queryselectoral('.card');
for(设i=0;i{
if(e.target.classList.contains('btn')){
警报(“嗨”)
}
}
)
另一种解决方案是直接查询包含“btn”类的元素,并将事件侦听器添加到这些元素中:
const buttons = document.querySelectorAll(".btn");
for (let i = 0; i < buttons.length; i++) {
buttons[i].addEventListener('click', function() {
alert('hi');
}
)
const buttons=document.queryselectoral(“.btn”);
对于(设i=0;i