您好我有一个简单的问题,我是否需要在其中的lblWelcomeUserMessage.innerHTML = ""; ( see below in code )
函数中指定before insertAdjacentHTML
?它实际上是在没有声明它的情况下工作,但我想知道optimal approach
是什么?
// Dynamic HTML / user interface for ALL users
function showWelcomeMessage() {
//lblWelcomeUserMessage.innerHTML = "";
var sWelcomeUserMessage = '<h3>' + 'Welcome:' + ' ' + sessionStorage.getItem( 'name' ) +
' ' + sessionStorage.getItem( 'lastname' ) + ' ' + sessionStorage.getItem( 'role' ) + ' </h3>';
var iUserImage = '<img src=" ' + sessionStorage.getItem( 'image' ) + ' " width="50px">';
lblWelcomeUserMessage.insertAdjacentHTML( 'beforeend', sWelcomeUserMessage + iUserImage );
}
答案 0 :(得分:1)
insertAdjacentHTML
inserts some HTML around a node(lblWelcomeUserMessage
,您之前应该使用lblWelcomeUserMessage = document.getElementById('welcome_tag')
)之类的内容。
将内部内容设置为空字符串并不是必需的,除非您要清除它。这是一个设计问题,而不是程序问题。
答案 1 :(得分:1)
这取决于你想做什么。
如果您多次调用
showWelcomeMessage
函数,那么 您需要将其设置为空lblWelcomeUserMessage.innerHTML = ""
function showWelcomeMessage() { lblWelcomeUserMessage.innerHTML = ""; var sWelcomeUserMessage = '<h3>' + 'Welcome:' + ' ' + sessionStorage.getItem( 'name' ) + ' ' + sessionStorage.getItem( 'lastname' ) + ' ' + sessionStorage.getItem( 'role' ) + ' </h3>'; var iUserImage = '<img src=" ' + sessionStorage.getItem( 'image' ) + ' " width="50px">'; lblWelcomeUserMessage.insertAdjacentHTML( 'beforeend', sWelcomeUserMessage + iUserImage ); } setInterval(showWelcomeMessage,4000);
OR
否则您可以从中移除
lblWelcomeUserMessage.innerHTML = "";
上面的代码
答案 2 :(得分:0)
什么是最佳方法?
顺便提一下,基于MDN:
https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML
insertAdjacentHTML()将指定的文本解析为HTML或XML 将结果节点插入到指定位置的DOM树中。 它不会重新解析它正在使用的元素,因此它会 不破坏该元素内的现有元素。这避免了 序列化的额外步骤,使其比直接更快 innerHTML操作。
所以它基本上取决于你的需求。如果您想要替换以前的消息,只需添加lblWelcomeUserMessage.innerHTML = "";
,如果您想要显示之前的所有消息,只需注释该代码。