如何将输入框的值存储在变量中?
How to store value of an input box in a variable?
我正在尝试用 scaledrone 制作一个聊天应用程序。
我正在学习本教程:https://www.scaledrone.com/blog/javascript-chat-room-tutorial/
但是在设置基本聊天之后,我想让用户定义自己的名字。所以我做了一个输入框,然后尝试使用js将输入框的值取值并赋值给一个变量。然后是聊天应用程序的名称部分,而不是使用我之前使用的随机名称功能。但是,我收到错误消息“无法在我的控制台中读取 null 的属性(读取 addEventListener)并且提交按钮根本没有显示。
我做错了什么?
我使用的代码在下面的 pastebin 链接中。
scaledrone 文档在这里:https://www.scaledrone.com/docs/api-clients/javascript
提前致谢。
另外,我在下面添加了 javascript 文件的原始文本,因为堆栈溢出不会让我 post 不添加一些代码(第一次 posting 到堆栈溢出 lol)。
https://pastebin.com/9DvF3WnX
https://pastebin.com/UrZ1xsMB
const CLIENT_ID = 'keECa1lpVtgABa1F';
const splash=document.querySelector('.splash');
const stuffjs=document.querySelector('.stuff');
var yourname;
/*function createMenuItem(name) {
let inputname = document.createElement('input');
inputname.placeholder = name;
inputname.className='inputnamefield';
return inputname;
}*/
/*function createButton(btnname){
let btn = document.createElement('input');
btn.type = 'submit';
btn.className='submitbtn';
return btn;
}*/
const inputnameagain=document.querySelector('.inputnamefield');
const buttoon=document.querySelector('.submitbtn');
buttoon.addEventListener('click',(e) => {
setTimeout(()=>{
yourname=inputboxstuff.value()
},1);
});
/*document.addEventListener('DOMContentLoaded',(e)=>{
setTimeout(()=>{
splash.classList.add('display-none');
},2000);
})
splash.addEventListener('mousedown',
(e)=>{
setTimeout(()=>{
splash.parentElement.removeChild(splash);
},1);
})*/
const drone = new ScaleDrone(CLIENT_ID, {
data: { // Will be sent out as clientData via events
name: yourname,
color: getRandomColor(),
},
});
let members = [];
drone.on('open', error => {
if (error) {
return console.error(error);
}
console.log('Successfully connected to Scaledrone');
const room = drone.subscribe('observable-room');
room.on('open', error => {
if (error) {
return console.error(error);
}
console.log('Successfully joined room');
});
room.on('members', m => {
members = m;
updateMembersDOM();
});
room.on('member_join', member => {
members.push(member);
updateMembersDOM();
});
room.on('member_leave', ({id}) => {
const index = members.findIndex(member => member.id === id);
members.splice(index, 1);
updateMembersDOM();
});
room.on('data', (text, member) => {
if (member) {
addMessageToListDOM(text, member);
} else {
// Message is from server
}
});
});
drone.on('close', event => {
console.log('Connection was closed', event);
});
drone.on('error', error => {
console.error(error);
});
function getRandomName() {
const adjs = ["autumn", "hidden", "bitter", "misty", "silent", "empty", "dry", "dark", "summer", "icy", "delicate", "quiet", "white", "cool", "spring", "winter", "patient", "twilight", "dawn", "crimson", "wispy", "weathered", "blue", "billowing", "broken", "cold", "damp", "falling", "frosty", "green", "long", "late", "lingering", "bold", "little", "morning", "muddy", "old", "red", "rough", "still", "small", "sparkling", "throbbing", "shy", "wandering", "withered", "wild", "black", "young", "holy", "solitary", "fragrant", "aged", "snowy", "proud", "floral", "restless", "divine", "polished", "ancient", "purple", "lively", "nameless"];
const nouns = ["waterfall", "river", "breeze", "moon", "rain", "wind", "sea", "morning", "snow", "lake", "sunset", "pine", "shadow", "leaf", "dawn", "glitter", "forest", "hill", "cloud", "meadow", "sun", "glade", "bird", "brook", "butterfly", "bush", "dew", "dust", "field", "fire", "flower", "firefly", "feather", "grass", "haze", "mountain", "night", "pond", "darkness", "snowflake", "silence", "sound", "sky", "shape", "surf", "thunder", "violet", "water", "wildflower", "wave", "water", "resonance", "sun", "wood", "dream", "cherry", "tree", "fog", "frost", "voice", "paper", "frog", "smoke", "star"];
return (
adjs[Math.floor(Math.random() * adjs.length)] +
"_" +
nouns[Math.floor(Math.random() * nouns.length)]
);
}
function getRandomColor() {
return '#' + Math.floor(Math.random() * 0xFFFFFF).toString(16);
}
//------------- DOM STUFF
const DOM = {
membersCount: document.querySelector('.members-count'),
membersList: document.querySelector('.members-list'),
messages: document.querySelector('.messages'),
input: document.querySelector('.message-form__input'),
form: document.querySelector('.message-form'),
};
DOM.form.addEventListener('submit', sendMessage);
function sendMessage() {
const value = DOM.input.value;
if (value === '') {
return;
}
DOM.input.value = '';
drone.publish({
room: 'observable-room',
message: value,
});
}
function createMemberElement(member) {
const { name, color } = member.clientData;
const el = document.createElement('div');
el.appendChild(document.createTextNode(name));
el.className = 'member';
el.style.color = color;
return el;
}
function updateMembersDOM() {
DOM.membersCount.innerText = `${members.length} users in room:`;
DOM.membersList.innerHTML = '';
members.forEach(member =>
DOM.membersList.appendChild(createMemberElement(member))
);
}
function createMessageElement(text, member) {
const el = document.createElement('div');
el.appendChild(createMemberElement(member));
el.appendChild(document.createTextNode(text));
el.className = 'message';
return el;
}
function addMessageToListDOM(text, member) {
const el = DOM.messages;
const wasTop = el.scrollTop === el.scrollHeight - el.clientHeight;
el.appendChild(createMessageElement(text, member));
if (wasTop) {
el.scrollTop = el.scrollHeight - el.clientHeight;
}
}
如何将输入框的值存储在变量中
const inputnamefield = document.querySelector('.inputnamefield');
const button = document.querySelector('.submitbtn');
button.addEventListener('click', (e) => {
setTimeout(() => {
const yourname = inputnamefield.value
}, 1);
})
我正在尝试用 scaledrone 制作一个聊天应用程序。 我正在学习本教程:https://www.scaledrone.com/blog/javascript-chat-room-tutorial/ 但是在设置基本聊天之后,我想让用户定义自己的名字。所以我做了一个输入框,然后尝试使用js将输入框的值取值并赋值给一个变量。然后是聊天应用程序的名称部分,而不是使用我之前使用的随机名称功能。但是,我收到错误消息“无法在我的控制台中读取 null 的属性(读取 addEventListener)并且提交按钮根本没有显示。 我做错了什么? 我使用的代码在下面的 pastebin 链接中。 scaledrone 文档在这里:https://www.scaledrone.com/docs/api-clients/javascript 提前致谢。 另外,我在下面添加了 javascript 文件的原始文本,因为堆栈溢出不会让我 post 不添加一些代码(第一次 posting 到堆栈溢出 lol)。
https://pastebin.com/9DvF3WnX https://pastebin.com/UrZ1xsMB
const CLIENT_ID = 'keECa1lpVtgABa1F';
const splash=document.querySelector('.splash');
const stuffjs=document.querySelector('.stuff');
var yourname;
/*function createMenuItem(name) {
let inputname = document.createElement('input');
inputname.placeholder = name;
inputname.className='inputnamefield';
return inputname;
}*/
/*function createButton(btnname){
let btn = document.createElement('input');
btn.type = 'submit';
btn.className='submitbtn';
return btn;
}*/
const inputnameagain=document.querySelector('.inputnamefield');
const buttoon=document.querySelector('.submitbtn');
buttoon.addEventListener('click',(e) => {
setTimeout(()=>{
yourname=inputboxstuff.value()
},1);
});
/*document.addEventListener('DOMContentLoaded',(e)=>{
setTimeout(()=>{
splash.classList.add('display-none');
},2000);
})
splash.addEventListener('mousedown',
(e)=>{
setTimeout(()=>{
splash.parentElement.removeChild(splash);
},1);
})*/
const drone = new ScaleDrone(CLIENT_ID, {
data: { // Will be sent out as clientData via events
name: yourname,
color: getRandomColor(),
},
});
let members = [];
drone.on('open', error => {
if (error) {
return console.error(error);
}
console.log('Successfully connected to Scaledrone');
const room = drone.subscribe('observable-room');
room.on('open', error => {
if (error) {
return console.error(error);
}
console.log('Successfully joined room');
});
room.on('members', m => {
members = m;
updateMembersDOM();
});
room.on('member_join', member => {
members.push(member);
updateMembersDOM();
});
room.on('member_leave', ({id}) => {
const index = members.findIndex(member => member.id === id);
members.splice(index, 1);
updateMembersDOM();
});
room.on('data', (text, member) => {
if (member) {
addMessageToListDOM(text, member);
} else {
// Message is from server
}
});
});
drone.on('close', event => {
console.log('Connection was closed', event);
});
drone.on('error', error => {
console.error(error);
});
function getRandomName() {
const adjs = ["autumn", "hidden", "bitter", "misty", "silent", "empty", "dry", "dark", "summer", "icy", "delicate", "quiet", "white", "cool", "spring", "winter", "patient", "twilight", "dawn", "crimson", "wispy", "weathered", "blue", "billowing", "broken", "cold", "damp", "falling", "frosty", "green", "long", "late", "lingering", "bold", "little", "morning", "muddy", "old", "red", "rough", "still", "small", "sparkling", "throbbing", "shy", "wandering", "withered", "wild", "black", "young", "holy", "solitary", "fragrant", "aged", "snowy", "proud", "floral", "restless", "divine", "polished", "ancient", "purple", "lively", "nameless"];
const nouns = ["waterfall", "river", "breeze", "moon", "rain", "wind", "sea", "morning", "snow", "lake", "sunset", "pine", "shadow", "leaf", "dawn", "glitter", "forest", "hill", "cloud", "meadow", "sun", "glade", "bird", "brook", "butterfly", "bush", "dew", "dust", "field", "fire", "flower", "firefly", "feather", "grass", "haze", "mountain", "night", "pond", "darkness", "snowflake", "silence", "sound", "sky", "shape", "surf", "thunder", "violet", "water", "wildflower", "wave", "water", "resonance", "sun", "wood", "dream", "cherry", "tree", "fog", "frost", "voice", "paper", "frog", "smoke", "star"];
return (
adjs[Math.floor(Math.random() * adjs.length)] +
"_" +
nouns[Math.floor(Math.random() * nouns.length)]
);
}
function getRandomColor() {
return '#' + Math.floor(Math.random() * 0xFFFFFF).toString(16);
}
//------------- DOM STUFF
const DOM = {
membersCount: document.querySelector('.members-count'),
membersList: document.querySelector('.members-list'),
messages: document.querySelector('.messages'),
input: document.querySelector('.message-form__input'),
form: document.querySelector('.message-form'),
};
DOM.form.addEventListener('submit', sendMessage);
function sendMessage() {
const value = DOM.input.value;
if (value === '') {
return;
}
DOM.input.value = '';
drone.publish({
room: 'observable-room',
message: value,
});
}
function createMemberElement(member) {
const { name, color } = member.clientData;
const el = document.createElement('div');
el.appendChild(document.createTextNode(name));
el.className = 'member';
el.style.color = color;
return el;
}
function updateMembersDOM() {
DOM.membersCount.innerText = `${members.length} users in room:`;
DOM.membersList.innerHTML = '';
members.forEach(member =>
DOM.membersList.appendChild(createMemberElement(member))
);
}
function createMessageElement(text, member) {
const el = document.createElement('div');
el.appendChild(createMemberElement(member));
el.appendChild(document.createTextNode(text));
el.className = 'message';
return el;
}
function addMessageToListDOM(text, member) {
const el = DOM.messages;
const wasTop = el.scrollTop === el.scrollHeight - el.clientHeight;
el.appendChild(createMessageElement(text, member));
if (wasTop) {
el.scrollTop = el.scrollHeight - el.clientHeight;
}
}
如何将输入框的值存储在变量中
const inputnamefield = document.querySelector('.inputnamefield');
const button = document.querySelector('.submitbtn');
button.addEventListener('click', (e) => {
setTimeout(() => {
const yourname = inputnamefield.value
}, 1);
})