html 如何在单击一个按钮时运行函数而不更改其他id值

xriantvc  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(114)

我有2列相同的ID,每列有1个按钮。如何运行一个函数时,一个按钮被点击,而不改变其他ID值?
下面是我的代码:

<div class="row">
<!--- column 1 ------> 
    <div class="column nature">
        <div class="content">
            <img src="images/pic.jpg" alt="Jane" style="width:100%">
            <div class="container">
                <p class="title" style="text-align:center;">SCA5-01</p>
                    <div  style="text-align:center;">
                        <div id="hrg" style="font-size:5vw;font-weight:bold;">2000</div> 
                        <div id="per">/500</div>
                    </div>
                <div style="width:100%;margin:0px 5%;display:block;">
                    <div style="font-size:2vw;">
                        <br>Spect :
                        <br>- New
                        <br>- Fresh
                    </div>
                </div>
                <p>
                <div style="width:100%;margin:0px auto;text-align:center;">
                    <input id="jmlh" type="number" value="500" style="width:50%;"> 
                    <button onclick="price();">chek</button>
                </div>
                </p>
                <p>
                    <button class="button">Order</button>
                </p>
            </div>
        </div>
    </div>
<!--- column 1 ------>  
        <div class="column nature">
        <div class="content">
            <img src="images/pic.jpg" alt="Jane" style="width:100%">
            <div class="container">
                <p class="title" style="text-align:center;">SCA5-01</p>
                    <div  style="text-align:center;">
                        <div id="hrg" style="font-size:5vw;font-weight:bold;">2000</div> 
                        <div id="per">/500</div>
                    </div>
                <div style="width:100%;margin:0px 5%;display:block;">
                    <div style="font-size:2vw;">
                        <br>Spect :
                        <br>- New
                        <br>- Fresh
                    </div>
                </div>
                <p>
                <div style="width:100%;margin:0px auto;text-align:center;">
                    <input id="jmlh" type="number" value="500" style="width:50%;"> 
                    <button onclick="price();">chek</button>
                </div>
                </p>
                <p>
                    <button class="button">Order</button>
                </p>
            </div>
        </div>
    </div>
</div>

下面是我的函数:

<script>
function price(){
var qty = document.getElementById("jmlh").value;
var prc = Math.ceil((1000000 / qty)/100)*100;
document.getElementById("hrg").innerHTML = prc;
document.getElementById("per").innerHTML = "/" + qty;
}
</script>

这里的问题是函数只在"列1"上运行,而在"列2"上不起作用。
我到底哪里做错了?

szqfcxe2

szqfcxe21#

id在同一文档中应是唯一的。请使用类或其他属性代替id
如果你想让集中式函数来处理点击,把点击的元素本身提交给那个函数,这样它就知道点击了哪一列:

<div class="column nature">
        <div class="content">
            <img src="images/pic.jpg" alt="Jane" style="width:100%">
            <div class="container">
                <p class="title" style="text-align:center;">SCA5-01</p>
                    <div  style="text-align:center;">
                        <div class="hrg" style="font-size:5vw;font-weight:bold;">2000</div> 
                        <div class="per">/500</div>
                    </div>
                <div style="width:100%;margin:0px 5%;display:block;">
                    <div style="font-size:2vw;">
                        <br>Spect :
                        <br>- New
                        <br>- Fresh
                    </div>
                </div>
                <p>
                <div style="width:100%;margin:0px auto;text-align:center;">
                    <input class="jmlh" type="number" value="500" style="width:50%;"> 
                    <button onclick="price(this);">chek</button>
                </div>
                </p>
                <p>
                    <button class="button">Order</button>
                </p>
            </div>
        </div>
    </div>
function price(el){
const elContainer = el.closest(".container");// find parent
var qty = elContainer.querySelector(".jmlh").value;
var prc = Math.ceil((1000000 / qty)/100)*100;
elContainer.querySelector(".hrg").innerHTML = prc;
elContainer.querySelector(".per").innerHTML = "/" + qty;
}

注意,所有的id都被class属性替换了,在javascript中,不再使用document.getElementById()搜索整个文档,而是只搜索.container元素中的子元素。

相关问题