所以今天我决定学习javascript并尝试一些看似简单的事情。 。但是我被困住了,无法弄清楚为什么这不起作用。
我正在尝试将onclick具有相同id的div中的文本复制到输入中,但是它总是将第一个divs文本复制到输入中,而不是我单击的div中。
有什么想法我可以解决这个问题吗?
function copyToInput(elementId) {
var getText = document.getElementById(elementId).innerText;
var chatHudInput = document.getElementsByClassName('hud-chat-input')[0];
chatHudInput.value = getText;
}
<div class="hud-chat-message" id="message" onclick="copyToInput('message');"> SOME TEXT HERE </div>
<hr>
<div class="hud-chat-message" id="message" onclick="copyToInput('message');"> SOME MORE TEXT HERE </div>
<hr>
<div class="hud-chat-message" id="message" onclick="copyToInput('message');"> EVEN MORE TEXT HERE </div>
<hr>
<input type="text" name="message" class="hud-chat-input" placeholder="Enter your chat message..." maxlength="140">
答案 0 :(得分:1)
请勿对元素使用相同的ID ,而应使用相同的类 。您可以在onclick函数中传递整个元素,并在函数中获取其文本
function copyToInput(elementId) {
var chatHudInput = document.getElementsByClassName('hud-chat-input')[0];
chatHudInput.value = elementId.innerText;
}
<div class="hud-chat-message message" onclick="copyToInput(this);"> SOME TEXT HERE </div>
<hr>
<div class="hud-chat-message message" onclick="copyToInput(this);"> SOME MORE TEXT HERE </div>
<hr>
<div class="hud-chat-message message" onclick="copyToInput(this);"> EVEN MORE TEXT HERE </div>
<hr>
<input type="text" name="message" class="hud-chat-input" placeholder="Enter your chat message..." maxlength="140">
答案 1 :(得分:0)
两个div不能共享ID。您可以共享类,但是ID是唯一的标识符。
https://www.w3schools.com/tags/att_id.asp
id属性指定HTML元素的唯一ID(该值在HTML文档中必须是唯一的)。
答案 2 :(得分:0)
Try This:
function copyToInput(elementId) {
var getText = document.getElementById(elementId).innerText;
var chatHudInput = document.getElementsByClassName('hud-chat-input')[0];
chatHudInput.value = getText;
}
<div class="hud-chat-message" id="message" onclick="copyToInput('message');"> SOME TEXT HERE </div>
<hr>
<div class="hud-chat-message" id="message2" onclick="copyToInput('message2');"> SOME MORE TEXT HERE </div>
<hr>
<div class="hud-chat-message" id="message1" onclick="copyToInput('message1');"> EVEN MORE TEXT HERE </div>
<hr>
<input type="text" name="message" class="hud-chat-input" placeholder="Enter your chat message..." maxlength="140">
答案 3 :(得分:0)
ID
必须为unique
,在您情况下id
不是唯一的,因此当document.getElementById(elementId)
看到与id
匹配的第一个message
时,它,并且不会继续搜索(因此始终获取第一格)。您的代码不需要使用
ID
的{{1}}。this
是指点击this
的人。
div
function copyToInput(elementId) {
var chatHudInput = document.getElementsByClassName('hud-chat-input')[0];
chatHudInput.value = elementId.innerText ;
}
答案 4 :(得分:0)
使用以下代码。您所有的元素都必须具有唯一的ID。在您的代码中,它使用第一个ID的唯一原因是因为第一个它将使用的ID(因为您只能有1个ID,并且代码假定您只有1个ID)。只需给3个元素提供不同的ID。
function copyToInput(elementId) {
var getText = document.getElementById(elementId).innerText;
var chatHudInput = document.getElementsByClassName('hud-chat-input')[0];
chatHudInput.value = getText;
}
<div class="hud-chat-message" id="message1" onclick="copyToInput('message1');"> SOME TEXT HERE </div>
<hr>
<div class="hud-chat-message" id="message2" onclick="copyToInput('message2');"> SOME MORE TEXT HERE </div>
<hr>
<div class="hud-chat-message" id="message3" onclick="copyToInput('message3');"> EVEN MORE TEXT HERE </div>
<hr>
<input type="text" name="message" class="hud-chat-input" placeholder="Enter your chat message..." maxlength="140">