2017-10-14 40 views
-3

我正在做一个大学的项目,我必须遵循我的老师给出的某些规范。特别是我不能使用innerHTML或InnertText。我怎样才能不使用innerHTML/innerText替换该代码?Javascript code alternative

HTML:

<div class = "boardtitle"> 

    <text>LAST SCORE: </text> 

    <div id="lastscore"></div> 

</div> 

JAVASCRIPT:

function lastScore(num){ 
    document.getElementById('lastscore').innerText = num; 
} 

假设调用,比如lastScore(3);我只是想看看旁边的HTML页面LAST SCORE: 3号,我怎么能代替它?

在此先感谢

+5

你没有使用'.innerHTML' Oo – Andreas

+4

如果老师还禁止使用'innerText()',他们*可能*的含义是让你以编程方式删除并创建元素使用'document.createElement()'而不是将它们写成HTML或文本字符串。看到这里的例子:https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement虽然不知道。这可能需要更多的上下文。也许你需要问你的老师。 –

+0

看看[文档#createTextNode文档示例](https://developer.mozilla。org/en-US/docs/Web/API/Document/createTextNode) –

回答

-2

使用span而不是div。你应该得到想要的结果。

<div class = "boardtitle"> 

    <text>LAST SCORE: </text> 

    <span id="lastscore"></span> 

</div> 

function lastScore(num){ 
    document.getElementById('lastscore').innerText = num; 
} 

你会得到旁边LAST SCORE:当你调用lastScore(3);

+0

span或div,它可以在Chrome上运行,但它不会在Firefox上运行,你能告诉我为什么吗? – ducajack

+0

它应该工作,https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText –

+0

检查此 - https://jsfiddle.net/daghachirag/0hr8rwxq/5/ –

1

如果你只需要后<text>元素值追加的数量越多,你可以在lastscore ID添加到您的<text id="lastscore">LAST SCORE: </text>元素,没有必要使用额外的div元素<div id="lastscore"></div>

function lastScore(num){ 
 
    document.getElementById('lastscore').textContent += num; 
 
} 
 

 
lastScore(3);
<div class = "boardtitle"> 
 

 
    <text id="lastscore">LAST SCORE: </text> 
 

 
</div>

按照评论:然后使用textContent和看到的是它比innerHTML的区别或https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent

+0

总是有人在SO谁喜欢投票没有给出理由: –

+1

不是我downvote,但我认为“我不能使用innerHTML或InnertText”与它有关 – JJJ

+0

@JJJ看我编辑,然后没有innerHTML或innerText,而是使用'textContent' –

1

正如在评论你的问题中提到,您不使用innerHTML已经在这里的innerText什么,但我只是假设你不能使用innerText。在这里你去:

function lastScore(num){ 
    var el = document.getElementById('lastscore'); 
    el.appendChild(document.createTextNode(num)); 
} 

的HTML元素中的纯文本也是DomNode,一种特殊的吧,TextNode,只包含文本和没有标记。 document对象还具有创建此类节点的方法document.createTextNode('some string'),该方法创建一个TextNode,就像任何其他常规类型的节点一样。所以你用你的自定义内容创建一个TextNode,并将它附加到你的元素。

更新:我并没有完全正确的得到你的问题:如果你要放置毗邻按成绩数量:文本,使用相同的JS代码,而放置的ID包含最后<text>元素SCORE:,并删除<div>

+1

如果lastScore()被多次调用? – Andreas

+0

是的,我知道这种行为完全违反直觉,但问题是不使用'innerText'或'innerHTML'来代替等效代码,所以这仍然是一个有效的答案。 –