Нужно создать динамический текст для меню с Javascript - PullRequest
0 голосов
/ 02 августа 2011

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

Я надеялся создатьсписок из них в JS, как показано ниже -

document.getElementsById('title').innerHTML="Title1 Text";
document.getElementsById('title2').innerHTML="Title2 Text";

Но, конечно, я хочу иметь несколько копий дивизий title, title2, которые не будут работать из-за структуры getElementsById,У кого-нибудь есть другие предложения или обходные пути?

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Вы всегда можете использовать классы вместо идентификаторов, что-то вроде

<p class="introText">Title1 Text</p>
<p class="closingText">Title2 Text</p>

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

<p class="introText" id="topIntro">Title1 Text</p>
<p class="closingText">Title2 Text</p>
<p class="introText">Title1 Text (again)</p>
0 голосов
/ 02 августа 2011

Вы хотите использовать классы вместо идентификатора. но JavaScript не имеет функции getElementsByClass () по умолчанию, поэтому, если вы не хотите использовать что-то вроде JQuery, вам придется определить функцию самостоятельно.

document.getElementsByClass = function(class){
   var itemsfound = new Array;
   var elements = document.getElementsByTagName('*');
   for(var i=0;i<elements.length;i++){
      if(elements[i].className == class){
         itemsfound.push(elements[i]);
      }
   }
   return itemsfound;
}

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

document.getElementsByClass('class'); // gives an array of elements of given class
document.getElementsByClass('class')[0]; // selects first element in array with given class

но если вы будете использовать JQuery, это так же просто, как сделать это:

$('.title').html("Title 1 Text");
$('.title2').html("Title 2 Text");

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

...