没有Jquery——Javascript可以´;即使我在正文中有脚本,也看不到我的id:s?

没有Jquery——Javascript可以´;即使我在正文中有脚本,也看不到我的id:s?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,当我在body标记中编写javascript时,它在我的id:s上返回null。 如果我在javascript中创建元素,它会找到id,但在body(html)中创建时不会找到。如果我在JQuery中写入,它会找到它。但如果在测试中出现,我想用纯javascript编写它。这令人沮丧。我试着加载window并将代码放在body标签下,但没有成功。我知道代码找不到它,因为它认为它没有被创建,但是我如何让代码看到我已经创建了一个html中的div document.getElementById(“

当我在body标记中编写javascript时,它在我的id:s上返回null。 如果我在javascript中创建元素,它会找到id,但在body(html)中创建时不会找到。如果我在JQuery中写入,它会找到它。但如果在测试中出现,我想用纯javascript编写它。这令人沮丧。我试着加载window并将代码放在body标签下,但没有成功。我知道代码找不到它,因为它认为它没有被创建,但是我如何让代码看到我已经创建了一个html中的div

document.getElementById(“#btn”).addEventListener(“单击”,函数(){
var obj={
FirstName:document.getElementBydId(“#FirstName”).value,
LastName:document.getElementBydId(“#LastName”).value,
地址:document.getElementBydId(“#地址”).value,
Phone:document.getElementBydId(“#Phone”).value,
Zip:document.getElementBydId(“#Zip”).value,
};
txtToDiv(obj);
});
功能TXTODIV(obj){
var d=getElementById(“#d”);
d、 innerHtml=obj.LastName+“”+obj.FirstName+“
”+ obj.Zip+“”+obj.Address+”
“+obj.Phone };
.container{边距:自动;背景颜色:浅灰色;宽度:500px;高度:400px;}

费尔南姆:
Efternamn:
邮编: 地址:
Telefon:
弗利塔
将javascript代码封装在

window.onload = function(){
    // your code goes here
}
也可以使用
document.getElementByID('myId')
而不是
#myId

document.getElementById(“btn”).addEventListener(“单击”,函数(){
var obj={
FirstName:document.getElementById(“FirstName”).value,
LastName:document.getElementById(“LastName”).value,
地址:document.getElementById(“地址”).value,
Phone:document.getElementById(“Phone”).value,
Zip:document.getElementById(“Zip”).value,
};
txtToDiv(obj);
});
功能TXTODIV(obj){
var d=document.getElementById(“d”);
d、 innerHTML=obj.LastName+“”+obj.FirstName+“
”+ obj.Zip+“”+obj.Address+”
“+obj.Phone };

费尔南姆:
Efternamn:
邮编: 地址:
Telefon:
弗利塔
您的代码中有相当多的打字错误,而且,要按id选择元素,
文档中不需要
#
。getElementById()
已按id查找元素。。通过选择容器中的所有
输入
,并将它们的ID用作属性名称,可以简化您的工作。因此,您不需要多次对所有内容进行硬编码。在
txtToDiv
函数中,还可以循环传递的对象属性

document.getElementById(“btn”).addEventListener(“单击”),函数(){
var obj={};
Array.prototype.forEach.call(document.queryselectoral(“.container input”),函数(e){
obj[e.id]=e.value;
});
txtToDiv(obj);
});
功能TXTODIV(obj){
var d=document.getElementById(“d”);
d、 innerHTML=Object.keys(obj.map)(函数(v){returnobj[v];}).join(“”);
};
.container{边距:自动;背景颜色:浅灰色;宽度:500px;高度:400px;}

费尔南姆:
Efternamn:
邮编: 地址:
Telefon:
弗利塔
删除
#
getElementBydId
此函数已经知道您正在查找id,无需像jquery中那样将
#
添加到名称中。此外,我总是创建一个函数作为键入
文档的捷径。getElementById
,这会很快变得非常单调乏味。例如
function-byId(id){return document.getElementById(id)}
-然后允许您键入
byId('firstName')。value
等-如果您确实希望在普通javascript中使用CSS选择器,您可能希望查看
document.querySelector
document.queryselectoral
函数,它们返回单个(第一个)元素和数组(即使只有1个)其中之一。@enhzflep值得注意的是,它不是一个
Array
数组,而是一个
NodeList
。另一个提示:当我需要用ID选择的多个元素创建一个对象或数组时,我首先编写一个仅以ID作为字符串的数组,然后将它映射到
document.getElementById(…)
。更加优雅。更好的练习是养成使用
的习惯。addEventListener('eventName',functionName,Boolbubles)
,因为您可以将多个处理程序附加到一个事件上(稍后删除其中任何一个)。对于文档的load事件来说,这并不重要,但还是一个好的练习。:)我已经试过了。它不起作用。但也许是文件。onload@MariaKällström-可以附加到窗口的onload事件。我使用以下命令:
window.addEventListener('load',onDocLoaded,false)后跟一个函数,
函数onDocLoaded(evt){..}(附加时删除事件名称的“开”部分,因此单击-->单击、onmousemove-->mousemove等)谢谢。我想你解决了。一些拼写错误和#::-)@MariaKällström竖起大拇指在哪里?:)我不能,对low rep:-(。