亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我想將動態分配的 id 傳遞給 javascript 函數

我想將動態分配的 id 傳遞給 javascript 函數

PHP
RISEBY 2022-01-23 10:47:53
我從查詢中獲得了一個結果集,并且有一個 count 變量,用于將 id 分配給輸入標簽?,F在我想將此 id 作為參數傳遞給 javascript 函數并遞增/遞減具有由 count 變量值分配的 id 的文本輸入字段值。用于獲取結果的查詢:for (some condition){    $cartsql = "SELECT * FROM products WHERE id=$key";    $cartres = mysqli_query($connection, $cartsql);    $cartr = mysqli_fetch_assoc($cartres);    ++$count;    <div class="entry value-minus1" onclick="decrement(<?php echo $count; ?>)"></div>    <input class="entry value1" type="text" value="<?php echo $value['quantity']; ?>" id="<?php echo $count; ?>" />    <div class="entry value-plus1" onclick="increment(<?php echo $count; ?>)"></div>                <!--quantity-->                <script>                function decrement(<?php echo $count; ?>) {                alert("hello");                var y = document.getElementById(<?php echo $count; ?>).value;                y = y - 1;                document.getElementById(<?php echo $count; ?>).value = y;                }                </script>}
查看完整描述

2 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

首先,第一個 div 中有一個錯字。您忘記回顯該值。改變:


onclick="decrement(<?php $count; ?>)"


onclick="decrement(<?php echo $count; ?>)"

然后,由于您將 id 作為參數傳遞給您的 js 函數,因此您不應該對該函數中的值進行硬編碼。


您還需要在循環之后輸出 javascript,否則您將創建多個具有相同名稱的函數,這顯然是行不通的。


將其更改為:


function increment(id) {

    document.getElementById(id).value++;

}


function decrement(id) {

    document.getElementById(id).value--;

}

現在您的函數中沒有硬編碼值,因此您可以重用它。


查看完整回答
反對 回復 2022-01-23
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

您不需要使用id屬性 - 純粹基于整數的 id 無論如何都是無效的(或者直到 HTML5 才有效)。您可以sibling selectors使用方便。作為演示,可以從根本上改變/簡化javascript函數


<style>

    div.entry{ display:inline-block;width:2rem;border:1px solid black; height:2rem; line-height:2rem; text-align:center; font-size:1rem; clear:none; cursor:pointer; }

    input[type='text']{display:inline-block;height:2rem; }

</style>


<script>

    function decrement(e){

        e.target.nextElementSibling.value--;

    }

    function increment(e){

        e.target.previousElementSibling.value++;

    }

</script>




for( $i=1; $i < 10; $i++ ){


    $value=mt_rand(20,50);


    echo "

    <div>

        <div class='entry value-minus1' onclick='decrement(event)'>-</div>

        <input class='entry value1' type='text' value='$value' />

        <div class='entry value-plus1' onclick='increment(event)'>+</div>

    </div>";

}

更好的是刪除任何內聯函數調用并使用外部注冊的事件處理程序 - 這使 HTML 保持美觀和干凈,并將 HTML 和 javascript 分開。


<script>

    document.addEventListener('DOMContentLoaded',()=>{

        document.querySelectorAll('div.entry').forEach( div=>{

            div.addEventListener('click',function(e){

                switch( this.dataset.dir ){

                    case 'increment':

                        this.previousElementSibling.value++;

                    break;

                    case 'decrement':

                        if(this.nextElementSibling.value > 0) this.nextElementSibling.value--;

                    break;

                }

            });

        })

    });

</script>


for( $i=1; $i < 10; $i++ ){


    $value=mt_rand(5,50);


    echo "

    <div>

        <div class='entry value-minus1' data-dir='decrement'>-</div>

        <input class='entry value1' type='text' value='$value' />

        <div class='entry value-plus1' data-dir='increment'>+</div>

    </div>";

}


查看完整回答
反對 回復 2022-01-23
  • 2 回答
  • 0 關注
  • 186 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號