Как: кнопки «Onclick» и сценарии текстовой области - PullRequest
0 голосов
/ 28 февраля 2020

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

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

Хорошо, еще немного. Я создаю текстовый / HTML редактор в локальном файле html, которым я могу поделиться со своей командой и который будет очень полезен для такого редактора контента, как мы, чтобы мы могли создавать теги XML с нуля (я заменит теги HTML, которые я покажу через некоторое время), как только у меня будут все ресурсы и коды, которые мне понадобятся.

Вот быстрый взгляд на то, как это выглядит:

enter image description here

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

1) Когда я щелкаю тег

, он должен отображаться там, где на данный момент нажимается мой курсор, а не под всеми текстами над ним. Но сейчас это то, что происходит. Я знаю, что в моем сценарии чего-то не хватает, и поэтому. Поэтому могу ли я попросить предложение или руководство, которое легко понять начинающему? Извините за то, что я так требователен.

2) Когда я нажимаю на определенную кнопку тега над редактором, может ли она отображаться в формате полужирный , например , этого <b>this</b>?

Я где-то читал, что поле ниже является текстовой областью и не позволяет форматировать, как полужирный, курсив и подчеркивание, однако, есть способ сделать это с некоторыми HTML, CSS а JS? (потому что это единственные языки, которые я могу как-то понять, хотя и новичок ie.)

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

Если это все еще невозможно сделать, по крайней мере, это есть способ выделить теги?

Теперь по некоторым незначительным вопросам ...

3) Я полагаю, что есть спецификация c enter like <br/> in HTML или space like (&nbsp;) in HTML для javascript ? Если мои предположения верны, это что-то вроде \n?

4) И наконец, нужно ли мне объединить все имеющиеся у меня скрипты в один тег <script></script> или можно разделить их в зависимости от их функции?

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

Кстати, я приложу полный код, который я в настоящее время, (потому что я не уверен что надо обрезать). Так что спасибо всем еще раз. Я надеюсь пройти это испытание!

<code><html>
<center><title>EDEN Editor</title></center>
<div align="center">
<h1>EDEN Editor</h1>
</div>
<hr>
<br/>
<style>
.button {
  padding: 10px 20px;
  font-size: 15px;
  text-align: center;
  cursor: pointer;
  outline: none;
  color: #fff;
  background-color: #e5e59b;
  border: none;
  border-radius: 15px;
}
.button:hover {background-color: #f5f5d8}

.button:active {
  background-color: #e5e59b;
  transform: translateY(1px);
}
</style>
<script language="JavaScript">

helpstat = false;
stprompt = false;
basic = true;

function thelp(swtch){
        if (swtch == 1){
                basic = false;
                stprompt = false;
                helpstat = true;
        }
        else if (swtch == 0) {
                helpstat = false;
                stprompt = false;
                basic = true;
        }
        else if (swtch == 2) {
                helpstat = false;
                basic = false;
                stprompt = true;
        }
}

function treset(){
        if (helpstat){
                alert("Clears the current editor.");
        }
        else {
        clear = prompt("Are you sure? (y/n)",'');
        clear = clear.toLowerCase();
        if(clear == 'y') {
                document.editor.reset();
                document.editor.value = "";
        }
        }
}       

function start(){
        if (helpstat){
                alert("Elements that appear at the beginning of the document, including TITLE.");
        }
        else if (basic) {
        document.editor.area.value = document.editor.area.value + "<html>\n<head>\n<title></title>\n</head>\n<body>\n";
        }
        else if (stprompt) {
                for(;;){
                        twrite = prompt("Title?",'');
                        if (twrite != "" && twrite != null){
                                break;
                        }
                        else {
                                prompt("You must enter a title.",'Ok, sorry.');
                        }
                }
                document.editor.area.value = document.editor.area.value + "<html>\n<head>\n<title>" + twrite + "</title>\n</head>\n<body ";

                twrite = prompt("Background color? (blank if none)",'');        
                if (twrite != "" && twrite != null){
                        twrite = '"' + twrite + '"';
                        document.editor.area.value = document.editor.area.value + "bgcolor=" + twrite + " ";
                }

                twrite = prompt("Background image? (blank if none)",'');                
                if (twrite != "" && twrite != null){
                        twrite = '"' + twrite + '"';
                        document.editor.area.value = document.editor.area.value + "background=" + twrite + " ";
                }

                twrite = prompt("Text color? (blank if none)",'');
                if (twrite != "" && twrite != null){
                        twrite = '"' + twrite + '"';
                        document.editor.area.value = document.editor.area.value + "text=" + twrite + " ";
                }

                twrite = prompt("Link color? (blank if none)",'');              
                if (twrite != "" && twrite != null){
                        twrite = '"' + twrite + '"';
                        document.editor.area.value = document.editor.area.value + "link=" + twrite + " ";
                }

                twrite = prompt("Visited link color? (blank if none)",'');              
                if (twrite != "" && twrite != null){
                        twrite = '"' + twrite + '"';            
                        document.editor.area.value = document.editor.area.value + "vlink=" + twrite + " ";
                }

                document.editor.area.value = document.editor.area.value + ">\n";
        }
}

function end(){
        if (helpstat){
                alert("Adds the the final elements to a document.");
        }
        else {
        document.editor.area.value = document.editor.area.value + "\n</body>\n</html>\n";  
        }
}

function preview(){
        if (helpstat) {
                alert("Preview/save the document.");
        }
        else {
                temp = document.editor.area.value;
                preWindow= open("", "preWindow","status=no,toolbar=n,menubar=y");
                preWindow.document.open();
                preWindow.document.write(temp);
                preWindow.document.close();
        }
}

function bold() {
        if (helpstat) {
                alert("Bold text.");
        }
        else if (basic) {
                document.editor.area.value = document.editor.area.value + "<b></b>";
        }
        else if (stprompt) {
                twrite = prompt("Text?",'');
                if (twrite != null && twrite != ""){
                document.editor.area.value = document.editor.area.value + "<b>" + twrite + "</b>";
                }
        }
}

function italic() {
        if (helpstat) {
                alert("Italicizes text.");
        }
        else if (basic) {
                document.editor.area.value = document.editor.area.value + "<i></i>";
        }
        else if (stprompt) {
                twrite = prompt("Text?",'');
                if (twrite != null && twrite != ""){
                document.editor.area.value = document.editor.area.value + "<i>" + twrite + "</i>";
                }
        }
}

function underline(){
        if (helpstat) {
                alert("Underlines text.");
        }
        else if (basic) {
                document.editor.area.value = document.editor.area.value + "<u></u>";
        }
        else if (stprompt) {
                twrite = prompt("Text?",'');
                if (twrite != null && twrite != ""){
                document.editor.area.value = document.editor.area.value + "<u>" + twrite + "</u>";
                }
        }
}

function pre(){
        if (helpstat) {
                alert("Sets text as preformatted.");
        }
        else if (basic) {
                document.editor.area.value = document.editor.area.value + "<pre>
";} else if (stprompt) {twrite = prompt (" Text? ", ''); If (twrite! = Null && twrite! =" ") {document.editor.area.value = document.editor.area.value + "
" + twrite + "
";}}} function center () {if (helpstat) {alert ("Centers text.");} else if (basi c) {document.editor.area.value = document.editor.area.value + " \ n \ n \ n \ n Random123 \ n ";} иначе if (stprompt) {twrite = prompt (" Text? ", ''); if (twrite! = null && twrite! =" ") { document.editor.area.value = document.editor.area.value + "
" + twrite + "
";}}} функция hbar () {if (helpstat) {alert ("Создает горизонтальную полосу . ");} else {document.editor.area.value = document.editor.area. значение + "
\ n"; }} function lbreak () {if (helpstat) {alert ("Создает новую строку, эквивалент возврата или ввода."); } else {document.editor.area.value = document.editor.area.value + " \ n ";}} function pbreak () {if (helpstat) {alert (" Делает две новые строки, эквивалент двух возвратов или вводит. ");} else {document.editor.area.value = document.editor. area.value + "

\ n";}} функция image () {if (helpstat) {alert ("Вставка изображения.");} else if (basi c) {document.editor.area. value = document.editor.area.value + 'image \ n';} else if (stprompt) {twrite = prompt ("Местоположение изображения?", ''); if (twrite! = null && twrite ! = "") {twrite = '"' + twrite + '"'; document.editor.area.value = document.editor.area.value + ' \ П '; }}} function aleft () {if (helpstat) {alert ("Вставляет изображение с выравниванием по левому краю."); } else if (basi c) {document.editor.area.value = document.editor.area.value + 'image\n'; } else if (stprompt){ twrite = prompt("Image location?",''); if (twrite != null && twrite != ""){ twrite = '"' + twrite + '"'; document.editor.area.value = document.editor.area.value + 'image\n'; } } } function aright(){ if (helpstat) { alert("Inserts an image with align right."); } else if (basic) { document.editor.area.value = document.editor.area.value + 'image\n'; } else if (stprompt) { twrite = prompt("Image location?",''); if (twrite != null && twrite != ""){ twrite = '"' + twrite + '"'; document.editor.area.value = document.editor.area.value + 'image\n'; } } } function atop(){ if (helpstat) { alert("Inserts an image with align top."); } else if (basic) { document.editor.area.value = document.editor.area.value + 'how to add tables in sites\n'; } else if (stprompt) { twrite = prompt("Image location?",''); if (twrite != null && twrite != ""){ twrite = '"' + twrite + '"'; document.editor.area.value = document.editor.area.value + 'image\n'; } } } function amid(){ if (helpstat) { alert("Inserts an image with align middle."); } else if (basic) { document.editor.area.value = document.editor.area.value + 'image\n'; } else if (stprompt) { twrite = prompt("Image location?",''); if (twrite != null && twrite != ""){ twrite = '"' + twrite + '"'; document.editor.area.value = document.editor.area.value + 'image\n'; } } } function abottom(){ if (helpstat) { alert("Inserts an image with align bottom."); } else if (basic) { document.editor.area.value = document.editor.area.value + 'image\n'; } else if (stprompt) { twrite = prompt("Image location?",''); if (twrite != null && twrite != ""){ twrite = '"' + twrite + '"'; document.editor.area.value = document.editor.area.value + 'image\n'; } } } function head1(){ if (helpstat) { alert("Creates a header, size 1 (largest size)."); } else if (basic) { document.editor.area.value = document.editor.area.value + "

\n"; } else if (stprompt) { twrite = prompt("Text?",''); if (twrite != null && twrite != ""){ document.editor.area.value = document.editor.area.value + "

" + twrite + "

\n"; } } } function head2(){ if (helpstat) { alert("Creates a header, size 2 (slightly smaller than 1)."); } else if (basic) { document.editor.area.value = document.editor.area.value + "

\n"; } else if (stprompt) { twrite = prompt("Text?",''); if (twrite != null && twrite != ""){ document.editor.area.value = document.editor.area.value + "

" + twrite + "

\n"; } } } function head3(){ if (helpstat) { alert("Creates a header, size 3 (slightly smaller than 2)."); } else if (basic) { document.editor.area.value = document.editor.area.value + "

\n"; } else if (stprompt) { twrite = prompt("Text?",''); if (twrite != null && twrite != ""){ document.editor.area.value = document.editor.area.value + "

" + twrite + "

\n"; } } } function head4(){ if (helpstat) { alert("Creates a header, size 4 (slightly smaller than 3)."); } else if (basic) { document.editor.area.value = document.editor.area.value + "

\n"; } else if (stprompt) { twrite = prompt("Text?",''); if (twrite != null && twrite != ""){ document.editor.area.value = document.editor.area.value + "

" + twrite + "

\n"; } } } function head5(){ if (helpstat) { alert("Creates a header, size 5 (slightly smaller than 4)."); } else if (basic) { document.editor.area.value = document.editor.area.value + "
\n"; } else if (stprompt) { twrite = prompt("Text?",''); if (twrite != null && twrite != ""){ document.editor.area.value = document.editor.area.value + "
" + twrite + "
\n"; } } } function head6(){ if (helpstat) { alert("Creates a header, size 6 (smallest size)."); } else if (basic) { document.editor.area.value = document.editor.area.value + "
\n"; } else if (stprompt) { twrite = prompt("Text?",''); if (twrite != null && twrite != ""){ document.editor.area.value = document.editor.area.value + "
" + twrite + "
\n"; } } } function linkopen(){ if (helpstat) { alert("Begins a link."); } else if (basic) { document.editor.area.value = document.editor.area.value + ''; } else if (stprompt) {twrite = prompt ("Расположение файла?", ''); if (twrite! = null && twrite! = "") {twrite = '"' + twrite + '"'; document.editor.area.value = document.editor.area.value + ' '; for (;;) {twrite = prompt ("Text?", ''); if (twrite! = "" && twrite! = null) {break; } else {prompt («Вы должны ввести текст ссылки.», «Хорошо, извините.»); }} document.editor.area.value = document.editor.area.value + twrite + ' \ n'; }}} function linktext () {if (helpstat) {alert ("Вставляет текст для ссылки."); } else if (basi c) {for (;;) {twrite = prompt ("Text?", ''); if (twrite! = "" && twrite! = null) {break; } else {prompt («Вы должны ввести текст ссылки.», «Хорошо, извините.»); }} document.editor.area.value = document.editor.area.value + twrite + '\ n'; } else if (stprompt) {alert ("Не используется в режиме подсказки."); }} function linkclose () {if (helpstat) {alert ("Закрывает ссылку."); } else if (basi c) {document.editor.area.value = document.editor.area.value + " \ n"; } else if (stprompt) {alert ("Не используется в режиме подсказки."); }} function anchor () {if (helpstat) {alert ("Устанавливает привязку (например, #here)."); } else if (basi c) {document.editor.area.value = document.editor.area.value + ' \ n'; } else if (stprompt) {twrite = prompt ("Имя привязки?", ''); if (twrite! = null && twrite! = "") {twrite = '"' + twrite + '"'; document.editor.area.value = document.editor.area.value + ' \ n'; }}} function orderopen () {if (helpstat) {alert ("Начинает упорядоченный список."); } else if (basi c) {document.editor.area.value = document.editor.area.value + "
    \ n"; } else if (stprompt) {for (i = 1 ;; i ++) { twrite = prompt ("Item" + i + "? (Пустой ввод прекращается.)", ''); if (twrite == "" || twrite == null) {break; } if (i == 1) {document.editor.area.value = document.editor.area.value + "
    1. " + twrite + "\ n"; } if (okeydokey) {document.editor.area.value = document.editor.area.value + "
    \ n"; }}} function li () {if (helpstat) {alert ("Создает элемент в списке."); } else if (basi c) {document.editor.area.value = document.editor.area.value + ""; } else if (stprompt) {alert ("Не используется в режиме подсказки."); }} function orderclose () {if (helpstat) {alert ("Закрывает упорядоченный список."); } else if (basi c) {document.editor.area.value = document.editor.area.value + " \ n"; } else if (stprompt) {alert ("Не используется в режиме подсказки."); }} function unorderopen () {if (helpstat) {alert ("Начинает неупорядоченный список."); } else if (basi c) {document.editor.area.value = document.editor.area.value + "
      "; } else if (stprompt) {for (i = 1 ;; i ++) {twrite = prompt ("Item" + i + "? (Пустой ввод останавливается.)", ''); if (twrite == "" || twrite == null) {break; } if (i == 1) {document.editor.area.value = document.editor.area.value + "
      • " + twrite + "\ n"; } if (okeydokey) {document.editor.area.value = document.editor.area.value + "
      \ n"; }}} function unorderclose () {if (helpstat) {alert ("Закрывает неупорядоченный список."); } else if (basi c) {document.editor.area.value = document.editor.area.value + " \ n"; } else if (stprompt) {alert ("Не используется в режиме подсказки."); }} function defopen () {if (helpstat) {alert ("Начинает список определений."); } else if (basi c) {document.editor.area.value = document.editor.area.value + "
      " + twrite + "
      " + twrite + "
      \ n"; } if (okeydokey) {document.editor.area.value = document.editor.area.value + "
      \ n"; }}} function defterm () {if (helpstat) {alert ("Создает термин в определении."); } else if (basi c) {document.editor.area.value = document.editor.area.value + ""; } else if (stprompt) {alert ("Не используется в режиме подсказки."); }} function define () {if (helpstat) {alert ("Создает определение."); } else if (basi c) {document.editor.area.value = document.editor.area.value + ""; } else if (stprompt) {alert ("Не используется в режиме подсказки."); }} function defclose () {if (helpstat) {alert ("Закрывает список определений."); } else if (basi c) {document.editor.area.value = document.editor.area.value + ""; } else if (stprompt) {alert ("Не используется в режиме подсказки."); }} function font () {if (helpstat) {alert ("Устанавливает шрифт."); } else if (basi c) {document.editor.area.value = document.editor.area.value + ''; } else if (stprompt) {twrite = prompt ("Font?", ''); if (twrite! = null && twrite! = "") {twrite = '"' + twrite + '"'; document.editor.area.value = document.editor.area.value + ''; }}} function fontcolor () {if (helpstat) {alert ("Устанавливает цвет шрифта."); } else if (basi c) {document.editor.area.value = document.editor.area.value + ''; } else if (stprompt) {twrite = prompt ("Color? (hex или name)", ''); if (twrite! = null && twrite! = "") {twrite = '"' + twrite + '"'; document.editor.area.value = document.editor.area.value + ''; }} function formtr () {if (helpstat) {alert ("Создает строку таблицы."); } else if (basi c) {document.editor.area.value = document.editor.area.value + ""; } else if (stprompt) {alert ("Не используется в режиме подсказки."); }} function formtd () {if (helpstat) {alert ("Создает стандартную ячейку таблицы."); } else if (basi c) {document.editor.area.value = document.editor.area.value + ""; } else if (stprompt) {alert ("Не используется в режиме подсказки."); }}
      Выберите режим:
      Руководство Незамедлительный Пишите

      1 Ответ

      2 голосов
      / 28 февраля 2020

      Немного отвечая на ваши вопросы, чтобы дать вам способ следовать:

      1) Если вы собираетесь использовать <textarea>, вы можете решить его, используя selectionStart Но если вы Я собираюсь использовать contenteditable со значением true в другом теге, я рекомендую вам взглянуть на этот gist (который работает как для <textarea>, так и для редактируемых элементов).

      2) Вы можете решить это, используя атрибут contenteditable. Таким образом, вам не нужно использовать элемент <textarea>, а, например, <div>.

      <div contenteditable="true">editable text</div>
      

      Тогда вы можете использовать такие форматы, как полужирный или itali c.

      3) Да, для создания новых строк вы можете использовать \n при добавлении текста. Когда форматирование разрешено, <br> должно сделать это при добавлении формата HTML.

      4) Хотя объединение файлов JavaScript лучше для производительности, оно также может быть плохо для ненужного код беспорядка. Так что это вопрос организации. Для этого есть некоторые инструменты, такие как webpack или gulp , которые выполняют эту работу автоматически в соответствии с выбранной вами конфигурацией. Так, например, ваши сценарии могут сливаться только на заключительном этапе, в то время как в среде разработки он продолжает то, как вы его написали, поэтому вы можете работать правильно.

      Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
      ...