Получить номер строки в html с помощью JavaScript

#javascript #coderay

#javascript #coderay

Вопрос:

Я выделил код ruby с помощью CodeRay, и теперь я хотел бы знать, на какой номер строки пользователь нажал. Этот номер строки должен соответствовать размеру строки в исходном коде. Какой лучший способ сделать это?

Ответ №1:

Вот как я решил этот вопрос. Я сгенерировал html с номерами с помощью CodeRay. Но у CodeRay нет точной документации на официальном сайте, поэтому, просмотрев код CodeRay, я сделал это следующим образом:

 content = CodeRay.scan(file.read, :ruby).div(:css => :class, 
                                                 :line_numbers => :inline)
  

В моем случае режим :line_numbers => :table не работает должным образом, поэтому я должен был использовать :inline mode. Если вам не нравятся цифры на вашей html-странице, я думаю, вы можете удалить это с помощью css или javascript.
Затем я написал небольшую функцию javascript:

 $('span').not('.no').click(function(e) {
    var target = $(e.target);
    target.effect('highlight', {}, 'slow');
    var i = 0;
    var prev_element = target.prev();
    var element;
    while (i   < 10) {
        element = $(prev_element[0]).context;
        if (element.className == "no") break;
        prev_element = prev_element.prev();
    }
    if (i > 9) {
        alert("Some problem with the finding number line");
    }
    else {
        var line_number;
        if (element.children.length > 0) line_number = element.children[0].innerHTML;
        else                             line_number = element.innerHTML;
        alert(line_number);
    }
    e.stopPropagation();
})
  

Любые предложения и улучшения будут оценены.