Замените атрибут SRC на TITLE в теге LI

У меня есть HTML-код, приведенный ниже:

<ul id = "thumbsPhotos">
     <li src = "/images/1alvaston-hall-relaxing-lg.jpg"  onclick = "updatePhoto (this.title)"><img src = "/images/1alvaston-hall-relaxing-sl.jpg"  width = "56" height = "56"></li>
     <li onclick = "updatePhoto(this.title)" src = ""><img src = "" width = "56"  height = "56"></li>
     <li onclick = "updatePhoto(this.title)" src = ""><img src = "" width = "56"  height = "56"></li>
</ul>

Теперь я хочу заменить все src в тегах <li>, а не в тегах <img>, используя InnerHTML. При этом мой результат будет:

<ul id = "thumbsPhotos">
     <li title = "/images/1alvaston-hall-relaxing-lg.jpg"  onclick = "updatePhoto(this.title)"><img src = "/images/1alvaston-hall-relaxing-sl.jpg"  width = "56" height = "56"></li>
     <li onclick = "updatePhoto(this.title)" title = ""><img src = "" width = "56" height = "56"></li>
     <li onclick = "updatePhoto(this.title)" title = ""><img src = "" width = "56" height = "56"></li>
</ul>

Итак, щелкнув элемент <li>, вы хотите изменить вложенный <img> src на значение атрибута title этого <li>?

Chris Serra 22.10.2008 18:55

нет, я думаю, он хочет изменить свой вывод так, чтобы атрибут «src» LI теперь стал атрибутом «title».

nickf 22.10.2008 18:58

нет У меня есть атрибут src в <li> (пожалуйста, проверьте первый html), я просто хочу заменить все атрибуты src на "title" (пожалуйста, проверьте второй html)

Manoj Singh 22.10.2008 18:58

сделано на стороне сервера, верно?

nickf 22.10.2008 19:00

Я не понимаю, зачем вообще нужны теги src в <li>?

Chris Serra 22.10.2008 19:01

"using InnerHTML" означает, что вы хотите, чтобы это происходило "внутри" браузера с использованием javascript? И почему это должен быть innerHtml? ... и почему вообще есть атрибут src? ;)

VolkerK 22.10.2008 19:06

Редакторы: быстрое нарушение кодировки тегов !!!!

Chris Marasti-Georg 22.10.2008 19:09

вау: было около 4 правок с разницей в минуту ... / я снова иду редактировать ...

nickf 22.10.2008 19:11

Что вы имеете в виду под "внутренним HTML"? Некоторые из ваших комментариев ниже кажутся противоречивыми, и вы вообще ничего не объясняете.

MDCore 22.10.2008 19:32

Я думаю, это домашнее задание.

Chris Marasti-Georg 22.10.2008 19:49

@ chris-marasti-georg: То же самое. ОП очень уклончиво.

MDCore 24.10.2008 14:26
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
11
4 605
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Скорее всего, вы можете использовать замену RegEx, которая соответствует атрибуту src, и выполнить преобразование. Я вижу, что вы также хотите добавить атрибут title, даже если совпадения нет, это тоже должно быть возможно.

Я попытаюсь найти для этого несколько примеров RegEx.

Не ответ, но это не очень семантический способ делать что-то. Откуда это взялось? Почему в элементе li вообще есть src?

Предполагая, что вам нужна опция javascript, вы можете использовать что-то вроде jquery:

$(document).ready(function() {
    $("li[src], li[src='']").each(function() {
        var li = $(this);
        li.attr("title", li.attr("src"));
        li.removeAttr("src");
    });
});

возможно ли это с использованием innerHTML, используя регулярное выражение

Manoj Singh 22.10.2008 19:10

В браузере? Вам все еще нужно запустить какой-то javascript. Почему вы закрываете себя для этого решения? Это проблема с домашним заданием?

Chris Marasti-Georg 22.10.2008 19:13

в основном мне нужно изменить этот "src" на "title" во время выполнения страницы

Manoj Singh 22.10.2008 19:15

Ну, код, который у меня там есть, сделает это. Вы можете разместить библиотеку jquery или сделать ссылку на уменьшенную версию по адресу jqueryjs.googlecode.com/files/jquery-1.2.6.min.js. Затем просто вставьте приведенный выше код в тег скрипта.

Chris Marasti-Georg 22.10.2008 19:24

И вы все еще не ответили на вопрос Почему, у вас есть атрибут src в теге li? Почему бы в первую очередь не создать правильный HTML?

Chris Marasti-Georg 22.10.2008 19:25

хех - мой ответ, использующий простой javascript, на самом деле меньше кода. :)

nickf 22.10.2008 19:30

Да, это так, и, вероятно, он должен быть выше моего :) Если парень знает, как принять ответ, так и будет.

Chris Marasti-Georg 22.10.2008 19:48
Ответ принят как подходящий

Не проверено, но вот регулярное выражение, которое может сделать это за вас ...

// find:
<li ([^>]*)src = "(.*?)"(.*?)>

// replace:
<li $1title = "$2"$3>

Обновлять: проверено и работает на вашем примере.

Если вы хотите запустить это на стороне клиента с помощью Javascript (по какой-то странной причине), вы можете сделать это:

var ul = document.getElementById("thumbsPhotos");
ul.innerHTML = ul.innerHTML.replace(
    /<li ([^>]*)src = "(.*?)"(.*?)>/g,
    '<li $1title = "$2"$3>'
);

не могли бы вы дать это решение, используя innerHTML

Manoj Singh 22.10.2008 19:11

Если вам нужно сделать это один раз, просто не найти и заменить работу?

В противном случае я согласен, что регулярное выражение - лучший вариант.

Другие вопросы по теме