Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么jquery.val()函数没有设置实际值?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么jquery.val()函数没有设置实际值?

Javascript 为什么jquery.val()函数没有设置实际值?,javascript,jquery,Javascript,Jquery,我使用此函数检查是否存在属性: var hasAttribute = function(el, attr) { if ("hasAttribute" in el) { return el.attributes[attr] != null; } else if ("outerHTML" in el) { return (el.outerHTML .replace(el.innerHTML, "")

我使用此函数检查是否存在属性:

var hasAttribute = function(el, attr) {
    if ("hasAttribute" in el) {
        return el.attributes[attr] != null;
    }
    else if ("outerHTML" in el) {
        return (el.outerHTML
                   .replace(el.innerHTML, "")
                   .indexOf(" " + attr + "=") > -1);
    }
};
问题是,当我使用
.val(x)
设置输入值时,如果我使用
.val()
可以获得该值,但
hasAttribute
函数无法检测到该值。显示问题(我希望第一个警报显示“输入有值”,第二个显示,但在Chrome中,至少第一个警报显示“输入需要值”)


如何使
.val(x)
按预期工作?(或者如何使
hasAttribute
检测此类值)

使用
.val
就像执行
el.value=…
。这与在元素上设置
属性不同。

属性和属性是两个不同的实体。属性是与html元素内联定义的。。加载时,浏览器将读取每个属性并创建关联的属性

稍后对此元素的任何更新都将更新属性而不是属性

这个答案有详细的属性和属性

可能是下面这个样子,

if ($("input").prop("value")) {
    alert("input has a value");
} else {
    alert("input needs a value");
}
你现在真的不需要函数了。因为如果道具不存在,jQuery将返回
undefined


正如Felix指出的,最好只做
input.value
,如果没有
的值,

hasAttributes
基本上只测试HTML源代码中是否存在这样的属性(或者说在“普通DOM节点中”)
.val
使用
HTML…元素的
value
属性,该元素是标准DOM接口的扩展。你必须区分HTML属性和DOM元素属性(实际上也叫做属性),这让我很困惑。1) DOM元素确实有方法,为什么不使用它呢?2) 如果您使用jQuery,为什么不使用
$(el).is(“[”+attr+“])
?@VisioN在调用
.val(x)
后仍然找不到“value”属性,因为jQuery只会设置DOM节点的“value”属性。@VisioN:legacy code…好的,如果我理解的话,我应该为如下内容更改hasAttribute:var hasAttribute=function(el,attr){return typeof$(el).prop(attr)!=“undefined”}@伊凡:取决于你想要什么。例如,
el.值对于
输入
元素始终存在。如果HTML中未设置值,则
el.value
将返回空字符串。但它永远不会是未定义的。