javascript - Como posso mudar div contenteditable="false" para "true"?
Estou brincando com o Angular2. Quero mudar o valor de uma div - Preciso alterar todos os contenteditable="false" para contenteditable="true" que estão na minha página HTML.
Por favor, note que às vezes o contenteditable="false" será adicionado a uma tag DIV e às vezes a uma tag P, h1 ou outra.
O HTML fica da seguinte forma:
<button (click)="selectDiv()">select div</button>
<section>
<div class="content">
<h1 contenteditable="false" >Resize your browser and see how they adapt.</h1>
<h1 contenteditable="false" >text2.</h1>
</div>
<div class="content" contenteditable="false">
<p>Content 2.</p>
<h1>text2.</h1>
</div>
</section>
Por favor, me guie sobre o que devo escrever em explore.ts para que, quando eu clicar no botão, selectDiv() seja chamado e a função seja executada e todo o contenteditable="false" se torne "true"
Por favor, note que pode haver qualquer número de contenteditable="false" no meu código.
selectDiv(){
//what should i write here
}
Resposta #1
Para uma forma Angular de fazer isso:
HTML
<button (click)="selectDiv()">select div</button>
<section>
<div class="content">
<h1 [contentEditable]="contentEditable">Resize your browser and see how they adapt.</h1>
<h1 [contentEditable]="contentEditable">text2.</h1>
</div>
<div class="content" [contentEditable]="contentEditable">
<p>Content 2.</p>
<h1>text2.</h1>
</div>
</section>
Controlador TypeScript
...
private contentEditable: boolean = false;
...
selectDiv(): void {
this.contentEditable = true;
}
...
Resposta #2
Você pode consultar o atributo e usar a propriedade attr para atualizar seu valor.
Aqui todos os h1 serão selecionados que possuem o atributo contenteditable
function selectDiv() {
$("h1[contenteditable='false']").attr('contenteditable', true)
}<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button onclick="selectDiv()">
select div</button>
<section>
<div class="content">
<h1 contenteditable="false">Resize your browser and see how they adapt.</h1>
<h1 contenteditable="false">text2.</h1>
</div>
<div class="content" contenteditable="false">
<p>Content 2.</p>
<h1>text2.</h1>
</div>
</section>