dpsfay2510 2012-03-28 18:33
浏览 42
已采纳

JavaScript函数中唯一ID的变量

I have an onclick event called in a PHP foreach loop for several items whose author name I need to click. Only one name was getting generated, so I know that I must have a unique id for each HTML element. I already have a variable $objkey for a counter used in the loop so I appended it to the id.

<?php
//This is the item that appears in the loop. 
//Currently, clicking on each one that is generated only generates the first author name
//The correct author as passed by PHP displays in the loop.
//$closest is the value of the author's name.
echo 'Click name to add <span><button id="closest' . $objkey . '"  onClick="setAuthor()">' . $closest . '</button></span><br />';
?>

I have done a print_r('$objkey); and the appropriate value for the counter is getting passed along.

I want the value of this button element $closest to be passed to an input field. I have appended the variable to both the input's id and name elements (not sure if that helps) (UPDATE: There is an input field for each of the authors that needs to get the value):

<?php 
echo '<input id="author_name' . $objkey . '"  type="text" name="author_name' . $objkey .  '" value="' . $author . '" />'; 
?>

Where I'm stuck is with my function:

<script type="text/javascript">function setAuthor() {
var author = document.getElementById("closest").innerHTML;
window.alert(author);
document.forms["myform"].elements["author_name"].value = author; }</script>

How do I create a variable in the function for the unique ids so that each looped item generates distinct names?

  • 写回答

1条回答 默认 最新

  • dtn55928 2012-03-28 19:28
    关注

    One way to do it is to pass this to the the setAuthor function:

    <?php
    //This is the item that appears in the loop. 
    //Currently, clicking on each one that is generated only generates the first author name
    //The correct author as passed by PHP displays in the loop.
    //$closest is the value of the author's name.
    echo "Click name to add <button id='closest_{$objkey}' onClick='setAuthor(this)'>{$closest}</button><br/>";
    ?>
    

    With this approach, you can access the element within setAuthor:

    <script type="text/javascript">
    function setAuthor(el) {
        var author = el.innerHTML,
            id = el.id.replace(/^closest_/, '');
        if (console) {
            console.log(author);
        }
        document.forms["myform"].elements["author_name_" + id].value = author;
    }
    </script>
    

    However, you shouldn't set onclick inline and for each element. You should use an event registration function.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法