добавление HTML-тегов к выделенному тексту в текстовой области. Почему "if ('selectionStart' в textarea)" должен быть там? - PullRequest
0 голосов
/ 01 октября 2011

Я нашел код JavaScript, который позволяет мне добавлять теги html вокруг текста, выделенного мной в поле textarea:

    <textarea id="myArea" cols="30" spellcheck="false">Select some text within this field.</textarea>
        <button onclick="ModifySelection ()">Modify the current selection</button>

<script>
      function ModifySelection () {
                var textarea = document.getElementById("myArea");
          if('selectionStart' in textarea){
          if (textarea.selectionStart != textarea.selectionEnd) {
                        var newText = textarea.value.substring (0, textarea.selectionStart) + 
                            "[start]" + textarea.value.substring  (textarea.selectionStart, textarea.selectionEnd) + "[end]" +
                            textarea.value.substring (textarea.selectionEnd);
                        textarea.value = newText;
                    }
                }
    }
</script>

Мои вопросы относятся к этой строке, if('selectionStart' in textarea){:

  1. Что именно означает эта строка?
  2. Почему selectionStart должен быть в кавычках?
  3. selectionStart обычно добавляется к объекту, подобному "textarea"(textarea.selectionStart),как можно ссылаться на него отдельно?
  4. Является ли If(X in Y){} стандартным синтаксисом javascript или он работает специально для selectionStart?

примечание: я проверяю этов jsfiddle

1 Ответ

2 голосов
/ 01 октября 2011
  1. if('selectionStart' in textarea) - это тестирование объекта - оно проверяет, имеет ли объект textarea свойство selectionStart.

  2. Оно должно быть в кавычкахв противном случае он будет интерпретирован как переменная (которая может существовать или не существовать в текущем контексте).

  3. Это зависит от браузера и от того, какая версия HTML поддерживается и отображается.

  4. Да, это нормальный синтаксис JavaScript.Он используется для проверки, находится ли указанное свойство в объекте.См. in в MDN.

...