У меня есть 2 массива с одинаковым количеством ключей. Я хотел бы пройтись по первому массиву, а затем найти в тегах <p>
любые совпадающие значения. Затем, если совпадение найдено, я хотел бы заменить это совпадающее значение соответствующим значением из 2-го массива.
У меня пока есть:
var text_original = ["original_word1", "original_word2", "original_word3"];
var text_replaced = ["replaced_word1","replaced_word2","replaced_word3"];
var z;
for (z = 0; z <= text_original.length; ++z) {
$("p").each(function(){
var text=jQuery(this).html();
$(this).html(text.replace(text_original,text_replaced));
});
}
Это общая идея, я не понимаю, как изолировать отдельные значения от нескольких значений массива. Заранее благодарим за помощь!
2 ответа
- Вы пропустили
echo
передjson_encode()
. - Ваш
json_encode()
не следует заключать в кавычки. - Вы должны использовать
[z]
для доступа к элементу массива.
Код:
var text_original = <?php echo json_encode($text_original); ?>;
var text_replaced = <?php echo json_encode($text_replaced); ?>;
var z;
for (z = 0; z <= text_original.length; ++z) {
$("p").each(function(){
var text=jQuery(this).html();
$(this).html(text.replace(text_original[z],text_replaced[z]));
});
}
- Воспользуйтесь функцией
indexOf
и проверьте найденный текст. - Используйте функцию
text
вместо функцииhtml
.
var text_original = ["original_word1", "original_word2", "original_word3"];
var text_replaced = ["replaced_word1", "replaced_word2", "replaced_word3"];
$('p').each(function() {
var text = $(this).text();
var index = text_original.indexOf(text);
if (index > -1) $(this).text(text.replace(text_original[index], text_replaced[index]));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>original_word1</p>
<p>original_word2</p>
<p>Ele from SO</p>
Почему $.text()
?
HTML-элемент
<p>
представляет собой абзац текста. Абзацы обычно представляются на визуальных носителях как блоки текста, которые отделены от соседних блоков вертикальным пустым пространством и / или отступом первой строки. Абзацы являются элементами блочного уровня.
Функция $.text()
вернет текст без тегов HTML.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.