Javascript 冲突将text()和val()方法与重置按钮窗体一起使用

Javascript 冲突将text()和val()方法与重置按钮窗体一起使用,javascript,jquery,html,Javascript,Jquery,Html,我有一个带有后缀\u holderid的表单和一些元素的设置值(例如div,input,…) 我知道表单输入元素的设置值必须使用val()方法。 我还知道,对于其他元素的设置值,例如span和div必须使用text()方法 所以我写了这段代码: <form id="myform"> <span id="title_holder">###</span> <div id="description_holder">###</div&

我有一个带有后缀
\u holder
id的表单和一些元素的设置值(例如
div
input
,…)

我知道表单输入元素的设置值必须使用
val()
方法。
我还知道,对于其他元素的设置值,例如
span
div
必须使用
text()
方法

所以我写了这段代码:

<form id="myform">
    <span id="title_holder">###</span>
    <div id="description_holder">###</div>
    <input type="text" value="###" id="id_holder">
    <textarea id="others_holder">###</textarea>
    <input type="reset">
</form>

<script>
var values = {
    'title': '111',
    'description': '222',
    'id': '333',
    'others': '444',
};

$.each(values, function(key, value) {
    elementId = $('#' + key + '_holder');
    if (elementId.length > 0) {
        elementId
            .text(value) //for div and span elements
            .val(value); //for input and textarea elements
    }
});
</script>
见在线:

你有什么建议

使用带选择器的方法

根据
选择器、元素或jQuery对象检查当前匹配的元素集
,如果这些元素中至少有一个与给定参数匹配,则返回
true

var值={
"标题":"111",,
“说明”:“222”,
'id':'333',
‘其他’:‘444’,
};
$。每个(值、函数(键、值){
var elementId=$(“#”+key+“#u holder”);
elementId.length&&elementId.is(':input')?elementId.val(值):elementId.text(值);
});

###
###
###
使用带选择器的方法

根据
选择器、元素或jQuery对象检查当前匹配的元素集
,如果这些元素中至少有一个与给定参数匹配,则返回
true

var值={
"标题":"111",,
“说明”:“222”,
'id':'333',
‘其他’:‘444’,
};
$。每个(值、函数(键、值){
var elementId=$(“#”+key+“#u holder”);
elementId.length&&elementId.is(':input')?elementId.val(值):elementId.text(值);
});

###
###
###

检查输入字段的类型。根据类型,使用
val()
text()


检查输入字段的类型。根据类型,使用
val()
text()


首先将默认值保存到数据重置
中。重置时只恢复值。
要检查元素是否为输入,请使用
.is(':input')

var值={
"标题":"111",,
“说明”:“222”,
'id':'333',
‘其他’:‘444’,
};
$(文档).ready(函数(){
$('.input')。每个(函数(){
如果(!$(this).is(':input')){
$(this.data('reset',$(this.text());
}
});
$('[type=“reset”]')。单击(函数(){
$('.input:not(:input')。每个(函数(){
$(this.text($(this.data('reset'));
});
});
$。每个(值、函数(键、值){
setVal($(“#”+键+“#持有者”),值;
});
});
函数设置值(el,值){
如果(标高长度>0){
如果(el.is(':input')){
el.val(价值);
}否则{
el.文本(值);
}
}
}

###
###
###

首先将默认值保存到
数据重置
。重置时只恢复值。
要检查元素是否为输入,请使用
.is(':input')

var值={
"标题":"111",,
“说明”:“222”,
'id':'333',
‘其他’:‘444’,
};
$(文档).ready(函数(){
$('.input')。每个(函数(){
如果(!$(this).is(':input')){
$(this.data('reset',$(this.text());
}
});
$('[type=“reset”]')。单击(函数(){
$('.input:not(:input')。每个(函数(){
$(this.text($(this.data('reset'));
});
});
$。每个(值、函数(键、值){
setVal($(“#”+键+“#持有者”),值;
});
});
函数设置值(el,值){
如果(标高长度>0){
如果(el.is(':input')){
el.val(价值);
}否则{
el.文本(值);
}
}
}

###
###
###

这可能会有帮助这可能会有帮助,感谢您提供了重置HTML元素的伟大解决方案,但正如我在问题中所说的,这对我来说并不重要。我的答案是:
。is(“:input”)
感谢您提供了重置HTML元素的伟大解决方案,但正如我在问题中所说的,这对我来说并不重要。我的答案是,
。is(“:input”)
此解决方案依赖于
输入
文本区域
,不适用于表单的其他输入元素。此解决方案依赖于
输入
文本区域
而不适用于表单的其他输入元素。
$.each(values, function(key, value) {
    elementId = $('#' + key + '_holder');
    if (elementId.length > 0) {
        //IF type of elementId is input form such as input, textarea,...
        elementId.val(value); //for input and textarea elements
        //ELSE normal html elements such as span, div,...
        elementId.text(value); //for div and span elements
    }
});
var elementType = elementId[0].tagName.toLowerCase();

if (elementType === 'input' || elementType === 'textarea') {
    elementId.val(value);
} else {
    elementId.text(value);
}