我正在阅读页面(各种)的元素与JavaScript和修改它们,如果需要的话。当我修改其中一个元素时,我想留下一个标记以表示我修改了它。然后,我可以通读页面上的元素,如果我找到了那个标记,我知道这是我修改过的元素之一,并且可以恢复它。下面是的工作对我的代码,但有人建议我应该使用的setAttribute和的getAttribute,而不是我在做什么:我应该使用setAttribute为元素添加属性吗?
//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
}
}
问题是,我应该为我的wasModifiedByMe布尔值和我的origViz属性使用setAttribute和getAttribute?我目前不相信我需要为我自己添加的属性使用属性函数。下面
以下螺纹的讨论,我想这个测试:
<!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的一部分。虽然没有显示秘密特性。
这是我的想法。使用setAttribute设置HTML属性,该属性也反映在javascript对象中,但是如果不使用setAttribute并向javascript主机对象添加属性,则反射不会以其他方式进行(TO HTML属性)。这就是我要的。我不想让我隐藏的每个元素突然显示一个wasHiddenByMe =“true”属性(虽然有这个优点,但我明白了)。
我的建议是为此使用类,并根据类编写CSS。班级的存在告诉你它是否被你修改过。 – kapa
很好的建议,但在这种情况下班级并不合适。我的代码可以添加到ANY页面,并在被要求时隐藏一些元素,并在稍后恢复。 – Dee2000
你仍然可以使用类,但是你可以保留'style.visibility'。 – kapa