使用事件处理程序包装器获取按钮的 html 内容
Getting html content for buttons using an event handler wrapper
我正在使用包装器将事件处理程序附加到页面上的某些按钮。使用以下代码,我可以在单击每个按钮时获取按钮 ID。但是,我需要获取 pre 标签的内容并连接两个 div 的内容以在单击每个按钮时创建一个命令。
有人可以帮忙吗
const wrapper = document.getElementById('wrapper');
wrapper.addEventListener('click', (event) => {
var parent=event.target.parentElement;
console.log(parent.getElementsByTagName('pre')[0].innerHTML);
const isButton = event.target.nodeName === 'BUTTON';
if (!isButton) {
return;
}
})
<div id="wrapper">
<div class="command">
<p>description 1</p>
<div>
<pre><div>kubectl </div><div>create cluster</div></pre>
</div>
<button id="button1" class="demo-button-small">Run</button>
</div>
<div class="command">
<p>description 2</p>
<div>
<pre><div>kubectl </div><div>delete cluster</div></pre>
</div>
<button id="button2" class="demo-button-small">Run</button>
</div>
<div class="command">
<p>description 3</p>
<div>
<pre><div>kubectl </div><div>list cluster</div></pre>
</div>
<button id="button3" class="demo-button-small">Run</button>
</div>
</div>
使用.closest()
找到包含的DIV,然后使用.querySelector()
找到其中的<pre>
标签并得到它的innerText
。
const wrapper = document.getElementById('wrapper');
wrapper.addEventListener('click', (event) => {
const isButton = event.target.nodeName === 'BUTTON';
if (!isButton) {
return;
}
const div = event.target.closest("div.command");
if (div) {
const pre = div.querySelector("pre");
if (pre) {
console.log(pre.innerText);
}
}
})
<div id="wrapper">
<div class="command">
<p>description 1</p>
<div>
<pre><div>kubectl </div><div>create cluster</div></pre>
</div>
<button id="button1" class="demo-button-small">Run</button>
</div>
<div class="command">
<p>description 2</p>
<div>
<pre><div>kubectl </div><div>delete cluster</div></pre>
</div>
<button id="button2" class="demo-button-small">Run</button>
</div>
<div class="command">
<p>description 3</p>
<div>
<pre><div>kubectl </div><div>list cluster</div></pre>
</div>
<button id="button3" class="demo-button-small">Run</button>
</div>
</div>
如果你得到按钮 ID,试试这个
const wrapper = document.getElementById('wrapper');
wrapper.addEventListener('click', (event) => {
const isButton = event.target.nodeName === 'BUTTON';
if (!isButton) {
return;
}
let button = document.getElementById(event.target.id)
text = button.parentNode.children[1].children[0].innerHTML
console.log(text)
})
获取父元素,然后获取父元素内的pre标签
const wrapper = document.getElementById('wrapper');
wrapper.addEventListener('click', (event) => {
var parent=event.target.parentElement;
console.log(parent.getElementsByTagName('pre')[0].innerHTML);
const isButton = event.target.nodeName === 'BUTTON';
if (!isButton) {
return;
}
})
<div id="wrapper">
<div class="command">
<p>description 1</p>
<div>
<pre><div>kubectl </div><div>create cluster</div></pre>
</div>
<button id="button1" class="demo-button-small">Run</button>
</div>
<div class="command">
<p>description 2</p>
<div>
<pre><div>kubectl </div><div>delete cluster</div></pre>
</div>
<button id="button2" class="demo-button-small">Run</button>
</div>
<div class="command">
<p>description 3</p>
<div>
<pre><div>kubectl </div><div>list cluster</div></pre>
</div>
<button id="button3" class="demo-button-small">Run</button>
</div>
</div>
我正在使用包装器将事件处理程序附加到页面上的某些按钮。使用以下代码,我可以在单击每个按钮时获取按钮 ID。但是,我需要获取 pre 标签的内容并连接两个 div 的内容以在单击每个按钮时创建一个命令。
有人可以帮忙吗
const wrapper = document.getElementById('wrapper');
wrapper.addEventListener('click', (event) => {
var parent=event.target.parentElement;
console.log(parent.getElementsByTagName('pre')[0].innerHTML);
const isButton = event.target.nodeName === 'BUTTON';
if (!isButton) {
return;
}
})
<div id="wrapper">
<div class="command">
<p>description 1</p>
<div>
<pre><div>kubectl </div><div>create cluster</div></pre>
</div>
<button id="button1" class="demo-button-small">Run</button>
</div>
<div class="command">
<p>description 2</p>
<div>
<pre><div>kubectl </div><div>delete cluster</div></pre>
</div>
<button id="button2" class="demo-button-small">Run</button>
</div>
<div class="command">
<p>description 3</p>
<div>
<pre><div>kubectl </div><div>list cluster</div></pre>
</div>
<button id="button3" class="demo-button-small">Run</button>
</div>
</div>
使用.closest()
找到包含的DIV,然后使用.querySelector()
找到其中的<pre>
标签并得到它的innerText
。
const wrapper = document.getElementById('wrapper');
wrapper.addEventListener('click', (event) => {
const isButton = event.target.nodeName === 'BUTTON';
if (!isButton) {
return;
}
const div = event.target.closest("div.command");
if (div) {
const pre = div.querySelector("pre");
if (pre) {
console.log(pre.innerText);
}
}
})
<div id="wrapper">
<div class="command">
<p>description 1</p>
<div>
<pre><div>kubectl </div><div>create cluster</div></pre>
</div>
<button id="button1" class="demo-button-small">Run</button>
</div>
<div class="command">
<p>description 2</p>
<div>
<pre><div>kubectl </div><div>delete cluster</div></pre>
</div>
<button id="button2" class="demo-button-small">Run</button>
</div>
<div class="command">
<p>description 3</p>
<div>
<pre><div>kubectl </div><div>list cluster</div></pre>
</div>
<button id="button3" class="demo-button-small">Run</button>
</div>
</div>
如果你得到按钮 ID,试试这个
const wrapper = document.getElementById('wrapper');
wrapper.addEventListener('click', (event) => {
const isButton = event.target.nodeName === 'BUTTON';
if (!isButton) {
return;
}
let button = document.getElementById(event.target.id)
text = button.parentNode.children[1].children[0].innerHTML
console.log(text)
})
获取父元素,然后获取父元素内的pre标签
const wrapper = document.getElementById('wrapper');
wrapper.addEventListener('click', (event) => {
var parent=event.target.parentElement;
console.log(parent.getElementsByTagName('pre')[0].innerHTML);
const isButton = event.target.nodeName === 'BUTTON';
if (!isButton) {
return;
}
})
<div id="wrapper">
<div class="command">
<p>description 1</p>
<div>
<pre><div>kubectl </div><div>create cluster</div></pre>
</div>
<button id="button1" class="demo-button-small">Run</button>
</div>
<div class="command">
<p>description 2</p>
<div>
<pre><div>kubectl </div><div>delete cluster</div></pre>
</div>
<button id="button2" class="demo-button-small">Run</button>
</div>
<div class="command">
<p>description 3</p>
<div>
<pre><div>kubectl </div><div>list cluster</div></pre>
</div>
<button id="button3" class="demo-button-small">Run</button>
</div>
</div>