#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
Итак, в принципе, у меня есть несколько элементов с некоторыми значениями данных в файле. Я хочу динамически создавать ссылки на них, используя эти значения данных для ввода текста, href и т.д.
Например, у меня есть два divs, id’ed first
и second
. Они имеют importance
значения, соответственно «наиболее важные» и «наименее важные».
Я хочу создать две ссылки на них с фразой «Это ссылка на самый / наименее важный div», используя JavaScript / jQuery. Ниже приведен нерабочий пример.
Файл a.html
(без заголовков и тому подобное, ofc):
<div id='first' data-importance='most important'>This is the first div.</div>
<div id='second' data-importance='least important'>This is the second div.</div>
Файл b.html
:
<p><a class='makelink' data-linkto='first'></a></p>
<p><a class='makelink' data-linkto='second'></a></p>
$(`.makelink`).each( function(){
var target = $(this).data('linkto');
$(this).attr('href','b.html#' target);
var imp = $('b.html #' target).data('importance');
$(this).html('Link to the ' imp ' div');
});
Однако ничего не происходит. Приветствуется любая помощь.
Комментарии:
1. вы заметили сообщение об ошибке в консоли браузера?
2. Вы не можете изменить DOM другого файла, если этот файл не открыт в окне или фрейме, о котором известно текущему файлу. Непонятно, что вы ищете.
Ответ №1:
Ваш код кажется правильным, за исключением того, что селектор должен быть внутри кавычек, а строка, сгенерированная в html()
, неправильно отформатирована:
$('.makelink').each( function(){ // Enclosed the selector with single/double qoute
var target = $(this).data('linkto');
$(this).attr('href','#' target);
var imp = $('#' target).data('importance');
$(this).html('Link to the ' imp ' div'); // concatenate the string with the variable using
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='first' data-importance='most important'>This is the first div.</div>
<div id='second' data-importance='least important'>This is the second div.</div>
<p><a class='makelink' data-linkto='first'></a></p>
<p><a class='makelink' data-linkto='second'></a></p>
Комментарии:
1. Спасибо, что заметили эти ошибки. Предоставленный вами код работает как есть. Однако я попытался выполнить ту же реализацию для получения значений данных в элементах в другом файле, и это не сработало (я обновил вопрос). Знаете ли вы, почему? Спасибо
2. Вы удобно проигнорировали часть вопроса о «другом файле».
3. @HereticMonkey Нет. Я сформулировал вопрос, опуская эту часть, потому что я думал, что любое решение для элементов в том же файле будет работать, и ответ Мамума работает в этом случае. Однако моя проблема на самом деле не была решена…
4. @Вопроситель мой комментарий был адресован Мамун, а не вам. Я не уверен, почему вы приняли этот ответ, если он не ответил на ваш вопрос…
5. @HereticMonkey Я это понимаю. Я просто объяснял, что его ответ был хорош для вопроса, заданного ранее. Так что это моя вина, что его ответ больше не применяется.