Переменная для уникальных идентификаторов в функции JavaScript - PullRequest
1 голос
/ 28 марта 2012

У меня есть событие onclick, которое вызывается в цикле PHP foreach для нескольких элементов, имя автора которых мне нужно щелкнуть.Было сгенерировано только одно имя, поэтому я знаю, что у меня должен быть уникальный идентификатор для каждого элемента HTML.У меня уже есть переменная $objkey для счетчика, используемого в цикле, поэтому я добавил его к идентификатору.

<?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 />';
?>

Я сделал print_r('$objkey);, и соответствующее значение для счетчика передается.

Я хочу, чтобы значение этого элемента кнопки $closest было передано вполе ввода.Я добавил переменную к элементам id и name входа (не уверен, поможет ли это) ( UPDATE : для каждого из авторов, для которого необходимо получить значение, есть поле ввода):

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

Я застрял в своей функции:

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

Как создать переменную в функции для уникальных идентификаторов, чтобы каждый зацикленный элемент генерировал разные имена?

1 Ответ

2 голосов
/ 28 марта 2012

Один из способов сделать это - передать this в функцию setAuthor:

<?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/>";
?>

При таком подходе вы можете получить доступ к элементу в 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>

Однако вы не должны устанавливать onclick для каждого элемента.Вы должны использовать функцию регистрации событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...