#javascript
#javascript
Вопрос:
у меня есть функция js, которая добавляет элемент в текстовую область.
let article = document.getElementById('article');
function addElement(classname) {
switch (classname) {
case 'texttitle':
let text = '<div classname="texttitle"> nt <a href=""> nnt </a>n </div>n';
article.textContent = text;
break;
case 'textvideo':
let text = '<div classname="textvideo"> nt<iframe src=" " allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""> t</iframe>n</div>n';
article.textContent = text;
break;
case 'textp':
let text = '<div classname="textp"> nt<p>nnt </p>n</div>n';
article.textContent = text;
break;
case 'textimg':
let text = '<div classname="textimg"> nt<img loading="lazy" src="" alt="Error" />n</div>n';
article.textContent = text;
break;
case 'textcode':
let text = '<div class="textcode"> nt<pre id="MainContent"> <code class="language-"> </code></pre>n</div>';
article.textContent = text;
break;
case 'textquote':
let text = '<div class="textquote"> nt<blockquote>nt</blockquote>n</div>';
article.textContent = text;
break;
default:
article.textContent = '??';
break;
}
}
<button class="btn btn-dark articletool" type="button" onclick="addElement('textvideo')">video</button>
<button class="btn btn-dark articletool" type="button" onclick="addElement('texttitle')">title</button>
<button class="btn btn-dark articletool" type="button" onclick="addElement('textp')">p</button>
<button class="btn btn-dark articletool" type="button" onclick="addElement('textimg')">img</button>
<button class="btn btn-dark articletool" type="button" onclick="addElement('textcode')">code</button>
<button class="btn btn-dark articletool" type="button" onclick="addElement('textquote')">quote</button>
<textarea id="article" class="form-control" placeholder="Article (optional)" cols="30" rows="10"
name="article"></textarea>
он добавляется до удаления значения текстовой области. я имею в виду, когда я удаляю текст текстовой области
после удаления. код работает, но не добавляет значения. почему?
Комментарии:
1. Ваш код не работает. Вы объявляли
text
let
много раз в одной и той жеswitch
области. Кроме того, поскольку вы используете.textContent
, вы не добавляете «элементы» вtextarea
, вы просто добавляете неразработанный текст. Если вам нужны фактические элементы, вам нужно использовать.innerHTML
, что тоже не самый лучший подход. Вы действительно должны использовать DOM для создания элементов иappend()
внедрения их в DOM.2. Спасибо. я решил проблему.
Ответ №1:
вы объявляли text
несколько раз и использовали textContent
вместо value
, это работает:
<button class="btn btn-dark articletool" type="button" onclick="addElement('textvideo')">video</button>
<button class="btn btn-dark articletool" type="button" onclick="addElement('texttitle')">title</button>
<button class="btn btn-dark articletool" type="button" onclick="addElement('textp')">p</button>
<button class="btn btn-dark articletool" type="button" onclick="addElement('textimg')">img</button>
<button class="btn btn-dark articletool" type="button" onclick="addElement('textcode')">code</button>
<button class="btn btn-dark articletool" type="button" onclick="addElement('textquote')">quote</button>
<textarea id="article" class="form-control" placeholder="Article (optional)" cols="30" rows="10"
name="article"></textarea>
let article = document.getElementById('article');
function addElement(classname) {
switch (classname) {
case 'texttitle':
article.value = '<div classname="texttitle"> nt <a href=""> nnt </a>n </div>n';
break;
case 'textvideo':
article.value = '<div classname="textvideo"> nt<iframe src=" " allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""> t</iframe>n</div>n';;
break;
case 'textp':
article.value = '<div classname="textp"> nt<p>nnt </p>n</div>n';
break;
case 'textimg':
article.value = '<div classname="textimg"> nt<img loading="lazy" src="" alt="Error" />n</div>n';
break;
case 'textcode':
article.value = '<div class="textcode"> nt<pre id="MainContent"> <code class="language-"> </code></pre>n</div>';
break;
case 'textquote':
article.value = '<div class="textquote"> nt<blockquote>nt</blockquote>n</div>';
break;
default:
article.value = '??';
break;
}
}
Ответ №2:
Попробуйте использовать value
свойство вместо textContent для textarea
article.value = text;