Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.12.2012, 16:27
Новичок на форуме
Отправить личное сообщение для kurskland Посмотреть профиль Найти все сообщения от kurskland
 
Регистрация: 05.12.2012
Сообщений: 7

Как перенести часть строки в квадратных скобках
Есть javascript вот часть кода
function($) {
	$.fn.listnav = function(options) {
		var opts = $.extend({}, $.fn.listnav.defaults, options);
		var letters = ['_', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'э', 'ю', 'я', '-'];
        var firstClick = false;
		opts.prefixes = $.map(opts.prefixes, function(n) { return n.toLowerCase(); });

Помогите, пожалуйста, как правильно сделать чтоб отображалось 2 строки с _ до z и с а до -
сейчас все отображается в одну строку. Все что нагуглил не помогло.
Ответить с цитированием
  #2 (permalink)  
Старый 05.12.2012, 17:44
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

kurskland, что имеется ввиду под отображалось?
перенесите на другую строку все что нужно...
Ответить с цитированием
  #3 (permalink)  
Старый 05.12.2012, 17:53
Новичок на форуме
Отправить личное сообщение для kurskland Посмотреть профиль Найти все сообщения от kurskland
 
Регистрация: 05.12.2012
Сообщений: 7

Сообщение от lord2kim Посмотреть сообщение
kurskland, что имеется ввиду под отображалось?
перенесите на другую строку все что нужно...
На странице сайта отображается список букв от A (лат) до Я в одну строку, мне нужно, чтобы на одной строке был русский алфавит на другой англ. Что значит перенести на другую строку? \n не помогает,все остается как есть, нажатие enter - на сайте строка исчезает совсем.
Ответить с цитированием
  #4 (permalink)  
Старый 05.12.2012, 18:05
Новичок на форуме
Отправить личное сообщение для kurskland Посмотреть профиль Найти все сообщения от kurskland
 
Регистрация: 05.12.2012
Сообщений: 7

Сообщение от Дзен-трансгуманист
во жесть...
Серьезно, товарищи, я ноль в js помогите...
Ответить с цитированием
  #5 (permalink)  
Старый 05.12.2012, 18:35
Кандидат Javascript-наук
Отправить личное сообщение для koeshiro Посмотреть профиль Найти все сообщения от koeshiro
 
Регистрация: 05.12.2012
Сообщений: 125

Сообщение от kurskland Посмотреть сообщение
Есть javascript вот часть кода
function($) {
	$.fn.listnav = function(options) {
		var opts = $.extend({}, $.fn.listnav.defaults, options);
		var letters = ['_', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'э', 'ю', 'я', '-'];
        var firstClick = false;
		opts.prefixes = $.map(opts.prefixes, function(n) { return n.toLowerCase(); });

Помогите, пожалуйста, как правильно сделать чтоб отображалось 2 строки с _ до z и с а до -
сейчас все отображается в одну строку. Все что нагуглил не помогло.
Зачем такие сложности?
Может через innerHTML Лучше? Там просто <br /> прописываем и всё
Если не правильно понял, объясните свою задумку =)
Ответить с цитированием
  #6 (permalink)  
Старый 05.12.2012, 18:35
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

kurskland, ну так как то он туда попадает? этот список букФ...покажите как вы его выводите
Ответить с цитированием
  #7 (permalink)  
Старый 06.12.2012, 10:25
Новичок на форуме
Отправить личное сообщение для kurskland Посмотреть профиль Найти все сообщения от kurskland
 
Регистрация: 05.12.2012
Сообщений: 7

Сообщение от Дзен-трансгуманист Посмотреть сообщение
Ну с этого и надо было начинать...
Это вообще не та часть кода, которая отвечает за отображение. Дайте хотя бы ссылку на страницу, где оно используется, может кто-нибудь и разберется для вас.
Значит вот весь код
(function($) {
	$.fn.listnav = function(options) {
		var opts = $.extend({}, $.fn.listnav.defaults, options);
		var letters = ['_', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'э', 'ю', 'я', '-'];
        var firstClick = false;
		opts.prefixes = $.map(opts.prefixes, function(n) { return n.toLowerCase(); });

		return this.each(function() {
			var $wrapper, list, $list, $letters, $letterCount, id;
			id = this.id;
			$wrapper = $('#' + id + '-nav'); // user must abide by the convention: <ul id="myList"> for list and <div id="myList-nav"> for nav wrapper
			$list = $(this);

			var counts = {}, allCount = 0, isAll = true, numCount = 0, prevLetter = '';

			function init() {
				$wrapper.append(createLettersHtml());

				$letters = $('.ln-letters', $wrapper).slice(0, 1); // will always be a single item
				if (opts.showCounts) $letterCount = $('.ln-letter-count', $wrapper).slice(0, 1); // will always be a single item

				addClasses();
				addNoMatchLI();
				if (opts.flagDisabled) addDisabledClass();
				bindHandlers();

				if (!opts.includeAll) $list.show(); // show the list in case the recommendation for includeAll=false was taken

				// remove nav items we don't need
				//
				if (!opts.includeAll) $('.all', $letters).remove();
				if (!opts.includeNums) $('._', $letters).remove();
				if (!opts.includeOther) $('.-', $letters).remove();

				$(':last', $letters).addClass('ln-last'); // allows for styling a case where last item needs right border set (because items before that only have top, left and bottom so that border between items isn't doubled)
				
				if ($.cookie && (opts.cookieName != null)) {
					var cookieLetter = $.cookie(opts.cookieName);
					if (cookieLetter != null) opts.initLetter = cookieLetter;
				}

				// decide what to show first
				//
				if (opts.initLetter != '') {
					firstClick = true;
					$('.' + opts.initLetter.toLowerCase(), $letters).slice(0, 1).click(); // click the initLetter if there was one
				}
				else {
					if (opts.includeAll) $('.all', $letters).addClass('ln-selected'); // showing all: we don't need to click this: the whole list is already loaded
					else { // ALL link is hidden, click the first letter that will display LI's
						for (var i = ((opts.includeNums) ? 0 : 1); i < letters.length; i++) {
							if (counts[letters[i]] > 0) {
								firstClick = true;
								$('.' + letters[i], $letters).slice(0, 1).click();
								break;
							}
						}
					}
				}
			}

			// positions the letter count div above the letter links (so we only have to do it once: after this we just change it's left position via mouseover)
			//
			function setLetterCountTop() {
				$letterCount.css({ top: $('.a', $letters).slice(0, 1).offset({ margin: false, border: true }).top - $letterCount.outerHeight({ margin: true }) }); // note: don't set top based on '.all': it might not be visible
			}

			// adds a class to each LI that has text content inside of it (ie, inside an <a>, a <div>, nested DOM nodes, etc)
			//
			function addClasses() {
				var str, firstChar, firstWord, spl, $this, hasPrefixes = (opts.prefixes.length > 0);
				$($list).children().each(function() {
					$this = $(this), firstChar = '', str = $.trim($this.text()).toLowerCase();
					if (str != '') {
						if (hasPrefixes) {
							spl = str.split(' ');
							if ((spl.length > 1) && ($.inArray(spl[0], opts.prefixes) > -1)) {
								firstChar = spl[1].charAt(0);
								addLetterClass(firstChar, $this, true);
							}
						}
						firstChar = str.charAt(0);
						addLetterClass(firstChar, $this);
					}
				});
			}

			function addLetterClass(firstChar, $el, isPrefix) {
				if (/\я/.test(firstChar)) firstChar = '-'; // not A-Z, a-z or 0-9, so considered "other"
				if (!isNaN(firstChar)) firstChar = '_'; // use '_' if the first char is a number
				$el.addClass('ln-' + firstChar);

				if (counts[firstChar] == undefined) counts[firstChar] = 0;
				counts[firstChar]++;
				if (!isPrefix) allCount++;
			}

			function addDisabledClass() {
				for (var i = 0; i < letters.length; i++) {
					if (counts[letters[i]] == undefined) $('.' + letters[i], $letters).addClass('ln-disabled');
				}
			}

			function addNoMatchLI() {
				$list.append('<li class="ln-no-match" style="display:none">' + opts.noMatchText + '</li>');
			}

			function getLetterCount(el) {
				if ($(el).hasClass('all')) return allCount;
				else {
					var count = counts[$(el).attr('class').split(' ')[0]];
					return (count != undefined) ? count : 0; // some letters may not have a count in the hash
				}
			}

			function bindHandlers() {

				// sets the top position of the count div in case something above it on the page has resized
				//
				if (opts.showCounts) {
					$wrapper.mouseover(function() {
						setLetterCountTop();
					});
				}

				// mouseover for each letter: shows the count above the letter
				//
				if (opts.showCounts) {
					$('a', $letters).mouseover(function() {
						var left = $(this).position().left;
						var width = ($(this).outerWidth({ margin: true }) - 1) + 'px'; // the -1 is to tweak the width a bit due to a seeming inaccuracy in jquery ui/dimensions outerWidth (same result in FF2 and IE6/7)
						var count = getLetterCount(this);
						$letterCount.css({ left: left, width: width }).text(count).show(); // set left position and width of letter count, set count text and show it
					});

					// mouseout for each letter: hide the count
					//
					$('a', $letters).mouseout(function() {
						$letterCount.hide();
					});
				}

				// click handler for letters: shows/hides relevant LI's
				//
				$('a', $letters).click(function() {
					$('a.ln-selected', $letters).removeClass('ln-selected');

					var letter = $(this).attr('class').split(' ')[0];

					if (letter == 'all') {
						$list.children().show();
						$list.children('.ln-no-match').hide();
						isAll = true;
					} else {
						if (isAll) {
							$list.children().hide();
							isAll = false;
						} else if (prevLetter != '') $list.children('.ln-' + prevLetter).hide();

						var count = getLetterCount(this);
						if (count > 0) {
							$list.children('.ln-no-match').hide(); // in case it's showing
							$list.children('.ln-' + letter).show();
						}
						else $list.children('.ln-no-match').show();

						prevLetter = letter;
					}

					if ($.cookie && (opts.cookieName != null)) $.cookie(opts.cookieName, letter);


					$(this).addClass('ln-selected');
					$(this).blur();
					if (!firstClick && (opts.onClick != null)) opts.onClick(letter);
					else firstClick = false;
					return false;
				});
			}

			// creates the HTML for the letter links
			//	
			function createLettersHtml() {
				var html = [];
				for (var i = 1; i < letters.length; i++) {
					if (html.length == 0) html.push('<a class="all" href="#">ALL</a><a class="_" href="#">0-9</a>');
					html.push('<a class="' + letters[i] + '" href="#">' + ((letters[i] == '-') ? '...' : letters[i].toUpperCase()) + '</a>');
				}
				return '<div class="ln-letters">' + html.join('') + '</div>' + ((opts.showCounts) ? '<div class="ln-letter-count" style="display:none; position:absolute; left:0; width:20px;">0</div>' : ''); // the styling for ln-letter-count is to give us a starting point for the element, which will be repositioned when made visible (ie, should not need to be styled by the user)
			}

			init();
		});
	};

	$.fn.listnav.defaults = {
		initLetter: '',
		includeAll: true,
		incudeOther: false,
		includeNums: true,
		flagDisabled: true,
		noMatchText: 'No matching entries',
		showCounts: true,
		cookieName: null,
		onClick: null,
		prefixes: []
	};
})

Изначально в коде был только английский, алфавит, но я добавил русский, изменил значение с "z" на "я" здесь
if (/\я/.test(firstChar)) firstChar

Этот код выводит словарь на сайт, то есть выбираем буковку и появляются все термины на эту букву. В данный момент все работает, но для эстетики мне нужно разбить строчку. Надеюсь поможете.
Ответить с цитированием
  #8 (permalink)  
Старый 06.12.2012, 10:45
Новичок на форуме
Отправить личное сообщение для kurskland Посмотреть профиль Найти все сообщения от kurskland
 
Регистрация: 05.12.2012
Сообщений: 7

Сообщение от iMaxmaxmaximus Посмотреть сообщение
Вы опубликовали очень много кода.

Пожалуйста, локализуйте проблему!

Выделите фрагмент кода, по которому есть вопрос и опубликуйте его отдельно.
Судя по вашему сообщению, вы ну совсем не знаете javascript.
.
Извините конечно, но я в первом сообщении выделил фрагмент кода, но знатоки подсказали, что это не тот фрагмент, вот я и выложил весь.
А вот не здесь ли случайно искать?
for (var i = 1; i < letters.length; i++) {
Ответить с цитированием
  #9 (permalink)  
Старый 06.12.2012, 16:11
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

kurskland,
function createLettersHtml() {
   var html = ['<a class="all" href="#">ALL</a><a class="_" href="#">0-9</a>'];
   for (i = 1; i < letters.length; i++) {
      html.push('<a class="' + letters[i] + '" href="#">' + ((letters[i] == '-') ? '...' : letters[i].toUpperCase()) + '</a>'+(letters[i] == "z" ? "<br>" : ""));
                }
   return '<div class="ln-letters">' + html.join('') + '</div>' + ((opts.showCounts) ? '<div class="ln-letter-count" style="display:none; position:absolute; left:0; width:20px;">0</div>' : ''); // the styling for ln-letter-count is to give us a starting point for the element, which will be repositioned when made visible (ie, should not need to be styled by the user)
            }


Сообщение от iMaxmaxmaximus Посмотреть сообщение
Администрация javascript.ru. Спасибо.
xD))
Ответить с цитированием
  #10 (permalink)  
Старый 06.12.2012, 16:51
Новичок на форуме
Отправить личное сообщение для kurskland Посмотреть профиль Найти все сообщения от kurskland
 
Регистрация: 05.12.2012
Сообщений: 7

lord2kim,
Строка сдвинулась вниз лишь на половину.Проверил во всех браузерах.Получилось не совсем то.

Подскажите, какой параметр крутить чтоб ниже опустить? Огромнейшее спасибо за участие.

Последний раз редактировалось kurskland, 06.12.2012 в 16:57.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрипт бегущей строки - как сделать строку непрерывной dansury Элементы интерфейса 9 26.01.2013 04:54
можно ли, если да то как удалить строки из таблицы Avaria Я не знаю javascript 3 11.06.2009 03:03
как "выхватить" часть числа POLOS Общие вопросы Javascript 1 17.03.2009 12:55
Подскажите как убрать часть текста при нажатии на кномпу или гиперссылку. potkin Общие вопросы Javascript 6 10.10.2008 07:55
Как с помощью JS "на-лету" менять часть HTML кода greendoc Общие вопросы Javascript 2 18.03.2008 20:43