是否可以从foreach循环中获取attr值


is it possible to get attr value from insede a foreach loop

我尝试了这个代码,但它提醒未定义的

<?php 
    foreach($result1 as $res1)
    {
            $user_id = 5;
?>
        <form name="wish" method="post" action="javascript:void(0);">
        <input type="submit" class="submit_wish1" id="calButton" data-wid="<?php echo $res1->user_id; ?>" data-uid="<?php echo $user_id; ?>" value="" onclick="favfunction()"/>
        </form>
<?php
    }
?>

<script>
    function favfunction()
    {
        calBtn = $(this).attr('data-wid');
        calBtn1 = $(this).attr('data-uid');
        alert(calBtn);
        alert(calBtn1);
    }
</script>

当我使用时

    calBtn = $('#calButton').attr('data-wid');
    calBtn1 = $('#calButton').attr('data-uid');

它会提醒相同的值。

我建议您将DOM对象本身传递到函数中

onclick="favfunction(this);"

然后你可以在你的JS 中做到这一点

<script>
function favfunction(elm)
{
    var calBtn = $(elm).attr('data-wid');
    alert(calBtn);
}
</script>

问题的根源很可能是对提交按钮使用相同的id

<form name="wish" method="post" action="javascript:void(0);">
<?php 
    $i = 1;
    foreach($result1 as $res1)
    {
        $user_id = 5;
?>
    <input type="submit" class="submit_wish1" id="calButton_<?php echo $i; ?>" data-wid="<?php echo $res1->user_id; ?>" data-uid="<?php echo $user_id; ?>" value="" onclick="favfunction(this)"/>
<?php
    $i += 1;
    }
?>
</form>

在html文档中应该只有一个CCD_ 2标签。

元素不应该有相同的id,所以我们在id后面附加一个数字,这个数字与foreach循环的迭代相关。


<script>
function favfunction(elm)
{
    var wid = $(elm).data('wid'),
        uid = $(elm).data('uid');
    alert('wid: ' + wid + ' - uid: ' + uid);
}
</script>

代码段示例

带有样本Php输出

    function favfunction(elm)
    {
        var wid = $(elm).data('wid'),
            uid = $(elm).data('uid');
  
        alert('wid: ' + wid + ' - uid: ' + uid);
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
 
<form name="wish" method="post" action="javascript:void(0);">
  <input type="submit" class="submit_wish1" id="calButton_1" data-wid="1" data-uid="5" value="Submit" onclick="favfunction(this)" />
  <input type="submit" class="submit_wish1" id="calButton_2" data-wid="2" data-uid="5" value="Submit" onclick="favfunction(this)" /> 
  <input type="submit" class="submit_wish1" id="calButton_3" data-wid="3" data-uid="5" value="Submit" onclick="favfunction(this)" />
  <input type="submit" class="submit_wish1" id="calButton_4" data-wid="4" data-uid="5" value="Submit" onclick="favfunction(this)" /> 
  <input type="submit" class="submit_wish1" id="calButton_5" data-wid="5" data-uid="5" value="Submit" onclick="favfunction(this)" /> 
</form>