您是否可以获得属性默认值,因此您不必在以下示例中重复该操作:
<p title="foo" id="p">Hello, world!</p>
<input type="text" id="i">
<script>
var p = document.getElementById('p'),
i = document.getElementById('i');
i.oninput = function () {
p.title = this.value;
if (this.value == 'bar') {
p.title = 'foo';
}
};
</script>
DEMO
对于文本字段元素,有一个称为defaultValue
:element.defaultValue
的属性。
有attribute.defaultValue
之类的东西吗?换句话说,上面的例子中是否有类似p.title = p.title.defaultValue
的内容?
答案 0 :(得分:1)
<强> Fiddle demo 强>
如果你构建一个很好的可重用函数,如:
function el(id){
var e = document.getElementById(id), a = e.attributes; e.default = {};
for(var k in a)if(typeof a[k]==='object') e.default[a[k].nodeName] = a[k].nodeValue
return e;
}
不仅可以让你轻松地通过ID引用所需的元素,如:
var p = el('p'),
i = el('i');
还可以随时检索任何默认元素属性,如:
p.default.title // "foo"
或在您的示例中:
i.oninput = function () {
p.title = this.value;
if (this.value == 'bar') {
p.title = p.default.title ;
}
};
或缩写为http://jsfiddle.net/jU5Tv/6/:
i.oninput = function () {
p.title = this.value==="bar" ? p.default.title : this.value;
};
所以双重乐趣无论如何:)
该函数的作用是:返回一个DOM HTMLElement,但同时循环任何Element分配的attribute
并将其存储在一个名为default
的自我指定的对象中。
答案 1 :(得分:0)
输入标题属性没有默认值属性。
但是,为了不重复自己,您可以在更新之前将其存储在变量中:
var p = document.getElementById('p'),
i = document.getElementById('i');
var defaultTitle = p.title;
i.oninput = function () {
p.title = (this.value == 'bar') ? defaultTitle : this.value;
};
答案 2 :(得分:0)
您可以创建一个数据属性来保存默认标题。
<p title="foo" data-default-title="foo" id="p">Hello, world!</p>
<input type="text" id="i">
在JS中:
if (this.value == 'bar') {
p.title = p.dataset.defaultTitle;
}