属性默认值:attribute.defaultValue

时间:2014-07-23 06:57:29

标签: javascript html

您是否可以获得属性默认值,因此您不必在以下示例中重复该操作:

<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

对于文本字段元素,有一个称为defaultValueelement.defaultValue的属性。 有attribute.defaultValue之类的东西吗?换句话说,上面的例子中是否有类似p.title = p.title.defaultValue的内容?

3 个答案:

答案 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;
}