Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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 HTML:输入类型按钮-值等效于defaultValue_Javascript_Button_Input - Fatal编程技术网

Javascript HTML:输入类型按钮-值等效于defaultValue

Javascript HTML:输入类型按钮-值等效于defaultValue,javascript,button,input,Javascript,Button,Input,我需要更改type=button的输入值。另一个函数通过比较value属性和defaultValue属性来检查其值是否已更改,但这与点无关。。。。这适用于除type=button的输入之外的所有其他输入。出于某种原因,浏览器也会更改默认值。但是为什么呢 注意:没有jQuery 下面是一个简化的测试代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtm

我需要更改type=button的输入值。另一个函数通过比较value属性和defaultValue属性来检查其值是否已更改,但这与点无关。。。。这适用于除type=button的输入之外的所有其他输入。出于某种原因,浏览器也会更改默认值。但是为什么呢

注意:没有jQuery

下面是一个简化的测试代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <script type="text/javascript">
            function d(input)
            {
                alert("value: "+ input.value +"\ndefaultValue: "+ input.defaultValue);
            }
        </script>
    </head>
<body>
    <input type="button" value="0" onclick="d(this); this.value=1; d(this);" />
</body>
</html>

将d的定义直接放在全局范围内:


问得好!type=reset也不起作用。 这是因为它们没有指定的数据类型,只是按钮。 您可以保存按钮的第一个值,然后使用它。我给你写了一个例子:

<!DOCTYPE HTML>
<html>
    <head></head>
    <body>
        <input id="test" type="button" value="Old text" onclick="d(this); this.value='Hello, new text';"/>
        <script type="text/javascript">
            var defaultValueOfInput = document.getElementById("test").value;
            function d(button){
                alert("Value: "+button.value+"\ndefaultValue: "+defaultValueOfInput);
            }
        </script>
    </body>
</html>

编辑:更新了我的代码。

您在更改值之前调用了该函数。如果把它放在后面,它就会起作用。但这不是我想知道的。另外,没有指定的数据类型意味着什么?他们没有类型和值属性吗?可能是因为这种组件通常无法通过浏览器进行更改?但仍有一些情况需要使用type=button更改输入值,imho。特别是在AJAX应用程序中。。。糟糕的是,我无法将旧值存储在您的示例中的某个位置。这个产品太复杂了。嗯。。。这不管用。同样的行为。有什么区别?不,没有。在Firefox、Internet Explorer、Opera、Chrome、Safari中测试。我的示例代码的区别在哪里?为什么它应该在全局范围内工作,而不是放在我放的地方?我把它放在head节点之外是错误的,对不起,但这不会改变我的行为?编辑:嗯,这取决于你工作的意思。它和我的代码完全一样。它显示第一个值:0 defaultValue:0,然后显示值:1 defaultValue:1。
<!DOCTYPE HTML>
<html>
    <head></head>
    <body>
        <input id="test" type="button" value="Old text" onclick="d(this); this.value='Hello, new text';"/>
        <script type="text/javascript">
            var defaultValueOfInput = document.getElementById("test").value;
            function d(button){
                alert("Value: "+button.value+"\ndefaultValue: "+defaultValueOfInput);
            }
        </script>
    </body>
</html>