Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обрезать часть слов у всех <h3> при загрузке страницы (https://javascript.ru/forum/misc/24788-obrezat-chast-slov-u-vsekh-h3-pri-zagruzke-stranicy.html)

swess 14.01.2012 01:26

Обрезать часть слов у всех <h3> при загрузке страницы
 
Есть около десятка новостей, у которых заголовок h3 имеет вид

010.какой-то заголовок
011.и вот такой скажем заголовок
042.и даже такой заголовок

необходимо отрезать первые четыре символа у всех заголовков, чтобы
убрать цифры и точку. причем это должно произойти сразу при загрузке страницы.

у заголовков можно ввести класс или уникальный айди.

попробовал как-то так, но работает.

<script type="text/javascript">

$( init );

function init() {

for(var i=1; i<=11; i++) {
$('h3#i').html($('h3#i').html().substring(4));
}
 

}
</script>


<h3 id="1">010.я заголовок</h3>
<h3 id="2">012.и я тоже заголовок</h3>


в js не силен, был бы очень благодарен, если кто подскажет,
как выполнить.

спасибо.

melky 14.01.2012 01:42

длина числа в начале может в будущем увеличиться, так что ориентироваться пока можно по точке.

можно вернуть подстроку, начиная от точки, не включая :

var str = "010.я заголовок";


var pos = str.indexOf(".") + 1; // прибавляем 1 к позиции точки, чтобы её пропустить
var newStr = str.substring(pos); 

alert(str+'\n\n'+newStr);


подумайте, как это можно использовать. будут вопросы - обращайтесь в эту тему.

swess 14.01.2012 02:03

Спасибо за вариант.
Только довести его до ума, все же не получается.
Эти действия должны применятся ко всем h3, а тут или цикл или
я даже не знаю, чтобы у всех сработало.

Aetae 14.01.2012 02:14

Если на 100% уверен в размере шрифта, то можно и так, лол.)
<style>
h3{
overflow:hidden;
font: 20px arial, sans-serif;
text-indent:-40px;
}
</style>
<h3 id="1">010.я заголовок</h3>
<h3 id="2">012.и я тоже заголовок</h3>


А вообще это в любом случае должно делаться не js, а на стороне сервера.

swess 14.01.2012 02:20

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

Aetae 14.01.2012 02:23

А я говорю в любом.

swess 14.01.2012 02:27

это не решает поставленной в данном случае задачи. а задача - сделать это на js.

Aetae 14.01.2012 02:33

Деньги на бочку.

swess 14.01.2012 02:49

пока вы вели демагогию, я написал короткий и вполне решающий задачу код
<script type="text/javascript">

$( init );

function init() {





for(var i=1; i<=3; i++) {

var el = $('#n' + i);
el.html(el.html().substring(4));

}

}
 


</script>


<h3 id="n1">010.я заголовок</h3>
<h3 id="n2">012.и я тоже заголовок</h3>

melky 14.01.2012 06:44

можно было чуть проще, без использования впустую идентификаторов :
$("h3").each(function(){ 
    this.innerHTML = this.innerHTML.substring(4);
});


Часовой пояс GMT +3, время: 15:22.