Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как разбить строку по словам на две примерно равные группа и обернуть каждую группу в див.

Mourat Boutry Знаток (281), на голосовании 7 лет назад
Если равное количество слов не получается отдать лишнее слово первой группе.
Напримерю
Имеем: Lorem ipsum dolor sit amet, consectetur adipiscing elit
Получаем: Lorem ipsum dolor sit amet,consectetur adipiscing elit consectetur
В итоге у нас должно получиться 2 строки который можно покрасить и подвигать.
Я в курсе что нельзя положить div в h3 и спать спокойно, но клиент принес ужасный макет для сайта, надо что-то решать.

Я разделил все слова спанами, но результат меня не устроил, нужно положить обе группы в дивы.
var words = $('h3').text().split(' ');
var j=0;
$('h3').empty();
$.each(words, function(i, v) {
$('h3').append($('').text(v));
j++;
});

function isInteger(num) {
return (num ^ 0) === num;
}

if (isInteger( j/2 )) {
$('
').insertAfter('h3 span:nth-child('+(j/2)+')');
} else {
$('
').insertAfter('h3 span:nth-child('+(~~(j/2)+1)+')');
}
Дополнен 7 лет назад
Майл вырезает html теги

Имеем: "H3" Lorem ipsum dolor sit amet, consectetur adipiscing elit "/H3"
Получаем: "H3" "DIV"Lorem ipsum dolor sit amet,"/DIV" "DIV"consectetur adipiscing elit consectetur"/DIV" "/H3"
Дополнен 7 лет назад
Сам решил. Пишите если будет решение оптимальнее

var words = $('h3').text().split(' ');
var j = 0;
//console.log(words.length);

function isInteger(num) {
return (num ^ 0) === num;
}

if (isInteger( (words.length)/2 )) {
var stringer = '';

for(var i=0; i < (words.length/2); i++){
stringer = stringer + words[i] + ' ';
j=i;
}
stringer = stringer + '';
stringer = stringer + '';
for(var i=j+1; i < (words.length); i++){
stringer = stringer + words[i] + ' ';
}
stringer = stringer + '';
} else {
var stringer = '';

for(var i=0; i < (~~(words.length/2)+1); i++){
stringer = stringer + words[i] + ' ';
j=i;
}
stringer = stringer + '';
stringer = stringer + '';
for(var i=j+1; i < ((words.length)); i++){
stringer = stringer + words[i] + ' ';
}
stringer = stringer + '';
}
$('h3').html(stringer);
Голосование за лучший ответ
Сергей Жаков Мудрец (16209) 7 лет назад
1) тег можешь использовать как div установи span у - css стиль display:block
2) тебе надо почитать об массивах javscript на сайте javascript.ru
и на developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

3) если я правильно понял, вот пример javascript + jquery кода по моему наиболее Оптимальный

// ==================================

var h3_text = $("h3").text();
// h3_text ="Lorem ipsum dolor sit amet, consectetur adipiscing elit" ;\

var words_all = h3_text.split(" ");
var div_text = "";
/* array.slice -- javascript стандартная функция массива */
var arr1 = words_all.slice(0 , (words_all.length/2) ); // слова от 0 до середины массива
var arr2 = words_all.slice((words_all.length/2) ); // слова с середины массивы

div_text += "" + arr1.join(' ') + " \n"; // n со слешем перевод строки -необзательный
div_text += "" + arr2.join(' ') + "";
//alert( div_text );

$("h3").html( div_text );
// =======================================
Похожие вопросы