Изменение <p> с выпавшим href

0

У меня проблемы, в основном у меня есть php-код, который генерирует объекты из моей базы данных, он выглядит примерно так:

for ($i = 0; $i < $num_rows; $i++) 
            {
    list($news_id, $news_name, $news_img, $news_date, $news_link) = $result->fetch_row(); 

    echo '<tr>';
    echo '<td>'.$news_date.'</td>';
    echo '<td id="udrag'.$i.'"><a href="get_news.php?newsid='.$news_id.'" id="drag'.$news_id.'" draggable="true" ondragstart="drag(event)">'.$news_name.'</a></td>';
    echo '<td><img src="'.$news_img.'" style="width:50px" /></td>';
    echo '<td>'.$string1 = substr($news_link, 0, strpos($news_link, 'com')+2).'</td>';
    echo '</tr>';

    }

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

Теперь, что я пытаюсь сделать, я хочу перетащить одну из этих ссылок в ap с событием ondrop, например:

 <div id="boxUp"><p id="a1" ondrop="drop(event)" ondragover="allowDrop(event)">main news</p></div>

После завершения капли, я хочу, чтобы внутри абзаца перетащил элемент href, чтобы он выглядел так:

 <div id="boxUp"><p id="a1" ondrop="drop(event)" ondragover="allowDrop(event)"><a href="get_news.php?newsid=5" id="drag5" draggable="true" ondragstart="drag(event)">some news name</a></p></div>

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

function allowDrop(ev) 
{
    ev.preventDefault();
}

function drag(ev) 
{
    ev.dataTransfer.setData("Text",ev.target.id);
    var elo = ev.dataTransfer.getData("Text");  
}
function drop(ev) 
{
    ev.preventDefault();
    var data=ev.dataTransfer.getData("Text");
    //ev.target.appendChild(document.getElementById(data).cloneNode(true));     
}

http://jsfiddle.net/Lzy5v/8/

  • 0
    добавление ссылки на jsfiddle поможет нам помочь вам
  • 0
    добавил ссылку на jsfiddle
Показать ещё 2 комментария
Теги:

1 ответ

0
Лучший ответ

Вы использовали ev.dataTransfer.getData("текст") в событии перетаскивания сразу после использования setData, похоже, вы можете сделать это только на событии drop, иначе событие drop даже не будет запущено, удалите "var elo =.... "и раскомментируйте последнюю строку вашей функции капли и все сделано, я изменил ваш jsfiddle, чтобы вы могли проверить:

http://jsfiddle.net/Lzy5v/11/

    <div id="boxUp">
    <p id="a1" ondrop="drop(event)" ondragover="allowDrop(event)">
        Place to drag the news and change this p into the news after drop
    </p>
</div>

<a href="get_news.php?newsid=397" id="link" draggable="true" ondragstart="drag(event)">some news</a>

<script>
    function allowDrop(ev)  {
        ev.preventDefault();
    }

    function drag(ev)   {
        ev.dataTransfer.setData("Text",ev.target.id);
    }

    function drop(ev)   {
        ev.preventDefault();
        var data = ev.dataTransfer.getData("Text"); 
        ev.target.appendChild(document.getElementById(data).cloneNode(true));       
    }
</script>
  • 0
    Да, но теперь моя ссылка копируется, я хочу, чтобы ссылка заменила текст P, есть идеи, как это сделать?
  • 0
    Если вы не хотите создавать копию ссылки, вы должны удалить метод «cloneNode (true)», я оставил его там, потому что вы не указали это. Теперь, если вы хотите заменить текст в вашем теге <p>, вы можете сделать несколько вещей, просто замените его, установив его innerHTML в пустую строку, но каждый раз, когда вы удаляете другую ссылку внутри этого тега <p>, удаляются все ранее удаленные ссылки. Кроме того, поэтому я не рекомендую, чтобы вы могли также поместить инструкции вне этого тега <p>, скажем, на h4, и вы могли бы скрыть это после первого удаления, установив для его свойства display значение none jsfiddle.net/Lzy5v / 12
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню