如何向a<;部门>;元素使用JavaScript?

如何向a<;部门>;元素使用JavaScript?,javascript,html,Javascript,Html,我用Google和StackOverflow到处搜索,但我似乎没有找到答案。我想在元素中写入文本,使用,然后清除元素,并在其中写入更多文本。我正在做一个简单的文字冒险游戏 这就是我想做的: <DOCTYPE!HTML> <body> <div class="gamebox"> <!-- I want to write in this div element --> </div&

我用Google和StackOverflow到处搜索,但我似乎没有找到答案。我想在元素中写入文本,使用,然后清除元素,并在其中写入更多文本。我正在做一个简单的文字冒险游戏

这就是我想做的:

<DOCTYPE!HTML>
    <body>
        <div class="gamebox">
            <!-- I want to write in this div element -->

        </div>
    </body>


作为JavaScript的新用户,我如何能够在
div
元素游戏盒中编写代码?不幸的是,我的JavaScript技能不是很好,如果您能耐心地解释代码中发生了什么,那就太好了。

您可以使用
querySelector
来获取与任何CSS选择器匹配的第一个元素的引用。在您的情况下,类选择器:

var div = document.querySelector(".gamebox");
querySelector
适用于所有现代浏览器,包括IE8。如果未找到任何匹配元素,则返回
null
。您还可以使用
querySelectorAll
获取所有匹配元素的列表:

var list = document.querySelectorAll(".gamebox");
然后使用基于0的索引访问该列表中的元素(
list[0]
list[1]
,等等);列表的长度可从
list.length
获得

然后,您可以将HTML字符串分配给
innerHTML

div.innerHTML = "This is the text, <strong>markup</strong> works too.";

这些功能可以在中找到。许多元素现在也在中介绍(特别是)。

您可以使用
querySelector
获取与任何CSS选择器匹配的第一个元素的引用。在您的情况下,类选择器:

var div = document.querySelector(".gamebox");
querySelector
适用于所有现代浏览器,包括IE8。如果未找到任何匹配元素,则返回
null
。您还可以使用
querySelectorAll
获取所有匹配元素的列表:

var list = document.querySelectorAll(".gamebox");
然后使用基于0的索引访问该列表中的元素(
list[0]
list[1]
,等等);列表的长度可从
list.length
获得

然后,您可以将HTML字符串分配给
innerHTML

div.innerHTML = "This is the text, <strong>markup</strong> works too.";

这些功能可以在中找到。其中的许多内容现在也在中介绍(特别是)。

如前面提到的getElementsByClassName更快。重要的是要知道,当您使用此命令时,将返回一个数组,其中包含要到达的元素。您可以指定其索引行[0],[1]

var gameBox = document.getElementsByClassName('gamebox')[0];
这是你怎么做的

    //returns array with elements
    var gameBox = document.getElementsByClassName('gamebox');

//inner HTML (overwrites fsd) this can be used if you direcly want to write in the div
    gameBox[0].innerHTML ='<p>the new test</p>';



//Appending when you want to add extra content

    //create new element <p>
    var newP = document.createElement('p');


    //create a new TextNode
    var newText = document.createTextNode("i'm a new text");

    //append textNode to the new element
    newP.appendChild(newText);


    //append to the DOM
    gameBox[0].appendChild(newP);
//返回包含元素的数组
var gameBox=document.getElementsByClassName('gameBox');
//内部HTML(覆盖fsd)如果您直接想在div中写入,可以使用此选项
gameBox[0].innerHTML='新测试;
//要添加额外内容时追加
//创建新元素
var newP=document.createElement('p');
//创建一个新的TextNode
var newText=document.createTextNode(“我是一个新文本”);
//将textNode附加到新元素
newP.appendChild(newText);
//附加到DOM
gameBox[0]。appendChild(newP);

像前面提到的GetElementsByCassName一样,速度更快。重要的是要知道,当您使用此命令时,将返回一个数组,其中包含要到达的元素。您可以指定其索引行[0],[1]

var gameBox = document.getElementsByClassName('gamebox')[0];
这是你怎么做的

    //returns array with elements
    var gameBox = document.getElementsByClassName('gamebox');

//inner HTML (overwrites fsd) this can be used if you direcly want to write in the div
    gameBox[0].innerHTML ='<p>the new test</p>';



//Appending when you want to add extra content

    //create new element <p>
    var newP = document.createElement('p');


    //create a new TextNode
    var newText = document.createTextNode("i'm a new text");

    //append textNode to the new element
    newP.appendChild(newText);


    //append to the DOM
    gameBox[0].appendChild(newP);
//返回包含元素的数组
var gameBox=document.getElementsByClassName('gameBox');
//内部HTML(覆盖fsd)如果您直接想在div中写入,可以使用此选项
gameBox[0].innerHTML='新测试;
//要添加额外内容时追加
//创建新元素
var newP=document.createElement('p');
//创建一个新的TextNode
var newText=document.createTextNode(“我是一个新文本”);
//将textNode附加到新元素
newP.appendChild(newText);
//附加到DOM
gameBox[0]。appendChild(newP);

选择具有的单个元素或具有的集合

这取决于你想做什么:


写入div或元素并将其写入div。

选择单个元素或集合

这取决于你想做什么:


写入div或元素并将其写入div。

@mshsayem我相信他想向div写入文本,而不是创建div。@JordanFitz是的,我想在div内写入文本。我该如何实现?我才八年级,我没有任何网络开发的专业经验,所以如果你能花点时间解释一下发生了什么,那就太好了。据我所知,document.createElement(“div”)在document.html上创建了一个新的html元素div,对吗?请查看我下面的答案。尽量不要使用那些DOM节点方法来构建它,而是使用字符串构建,html字符串构建使用更少的内存。@mshsayem我相信他想向div写入文本,而不是创建div。@JordanFitz Yes,我想在div中写文本。我该如何完成?我才八年级,我没有任何网络开发的专业经验,所以如果你能花点时间解释一下发生了什么,那就太好了。据我所知,document.createElement(“div”)在document.html上创建了一个新的html元素div,对吗?请查看我下面的答案。尽量不要使用那些DOM节点方法来构建它,而是使用字符串构建,html字符串构建使用更少的内存。谢谢,我想我现在明白了。我自己来试试。从我收集的资料来看,
。querySelector
/
。querySelector all
对于更复杂的选择尤其有用,例如
“.gamebox.genderantclass”
和类似的选择。在单个类选择中,它似乎比
getElementsByClassName
慢很多(显示慢93%)。缺点是IE8和更低版本似乎确实不支持
getElementsByClassName
();(@DaniëlKnippers:虽然这是一个相当大的绝对性能增量,每秒超过75万次查询,但我非常怀疑这是否有任何真实的、可感知的差异。当然,QS/QSA的使用率更高