我读通过页面(各种)使用JavaScript的元素,如果需要修改它们。 当我做修改的内容之一,我要离开一个标志背后说我修改了它。 后来的后来,我可以通过页面上的元素阅读,如果我发现标记,我知道这是我修改的元素之一,可将其还原。 下面是的工作对我的代码,但有人建议我应该使用的setAttribute和的getAttribute,而不是我在做什么:
//hide some elements, after first leaving a marker and saving orig. val
for(var i=0; i<elements.length; i++) {
if(should_i_hide_this_element(elements[i])) { //external logic unimportant
elements[i].wasModifiedByMe = true; //mark element as modified
elements[i].origViz = elements[i].style.visibility; //save visibility val
elements[i].style.visibility = "hidden"; //and give it a new val
}
}
相应的代码来恢复元件值是这样的:
for(var i=0; i<elements.length; i++) {
if(elements[i].wasModifiedByMe) { //This is one I modified
elements[i].style.visibility = elements[i].origViz; //restore original val
elements[i].wasModifiedByMe = false; //mark as not modified now
}
}
现在的问题是,我应该使用的setAttribute和的getAttribute我wasModifiedByMe布尔和我origViz属性? 我目前不认为我需要使用属性功能为我自己添加的属性。
继以下螺纹的讨论,我想这个测试:
<!doctype html>
<html>
<body>
<div id="mydiv">DIV</div>
<script>
var elem = document.getElementById("mydiv");
elem.secretproperty = "not_seen_in_elements_tab_in_chrome_dev_tools";
elem.setAttribute("publicproperty","is_visible_in_elements_tab");
</script>
</body>
</html>
而在Chrome浏览器开发工具的元素标签,我看到mydiv是表明公物属性作为DIV的一部分。 它没有显示secretproperty虽然。
这是我想的。 通过使用setAttribute是设置一个HTML属性,它也体现在JavaScript对象,而不是通过使用setAttribute和添加属性的JavaScript宿主对象时,反射不走另一条路( 到 HTML属性)。 这就是我要的。 我不想每次我已经隐藏元素突然显示wasHiddenByMe =“true”属性(虽然有可取之处在于,我看到了)。