我的脚本想念什么吗?
当我按下减号(-)按钮时一切正常,但是当我按下加号(+)按钮时计算器出错。它的节目1、11、21,〜一切都以1结尾。
这是我的代码:
function myFunctionDown() {
var x = document.getElementById("myNumber").value;
var y = 1;
var a = (x-y)*1;
document.getElementById("myNumber").stepUp(-1);
document.getElementById("demo").innerHTML = a;
}
function myFunctionUp() {
var x = document.getElementById("myNumber").value;
var y = 1;
var a = (x+y)*1;
document.getElementById("myNumber").stepUp(1);
document.getElementById("demo").innerHTML = a;
}
<button onclick="myFunctionDown()">-</button>
<input type="number" id="myNumber" value="0">
<button onclick="myFunctionUp()">+</button>
<br/><br/>
$ <span id="demo">0</span>
我从w3school获得了这段代码,并以非常基础的知识对其进行了编辑。我有什么想念的吗?还是您有更好的方法来编写它?
答案 0 :(得分:3)
尝试一下:-
使用parseInt()
函数将字符串值转换为数字类型。
function myFunctionDown() {
var x = parseInt(document.getElementById("myNumber").value);
var y = 1;
var a = (x-y)*1;
document.getElementById("myNumber").stepUp(-1);
document.getElementById("demo").innerHTML = a;
}
function myFunctionUp() {
var x = parseInt(document.getElementById("myNumber").value);
var y = 1;
var a = (x+y)*1;
document.getElementById("myNumber").stepUp(1);
document.getElementById("demo").innerHTML = a;
}
<button onclick="myFunctionDown()">-</button>
<input type="number" id="myNumber" value="0">
<button onclick="myFunctionUp()">+</button>
<br/><br/>
$ <span id="demo">0</span>
答案 1 :(得分:3)
您需要使字符串为整数/数字(当前为字符串,因此它是串联值而不是相加)。您可以使用parseInt(document.getElementById("myNumber").value);
这将使值变成整数,例如将"1"
变成1
function myFunctionDown() {
var x = document.getElementById("myNumber").value;
var y = 1;
var a = (x-y)*1;
document.getElementById("myNumber").stepUp(-1);
document.getElementById("demo").innerHTML = a;
}
function myFunctionUp() {
var x = parseInt(document.getElementById("myNumber").value);
var y = 1;
var a = (x+y)*1;
document.getElementById("myNumber").stepUp(1);
document.getElementById("demo").innerHTML = a;
}
<button onclick="myFunctionDown()">-</button>
<input type="number" id="myNumber" value="0">
<button onclick="myFunctionUp()">+</button>
<br/><br/>
$ <span id="demo">0</span>
答案 2 :(得分:3)
您需要将输入值解析为数字-因为所有输入值实际上都是字符串。
function myFunctionDown() {
var x = parseInt(document.getElementById("myNumber").value);
var y = 1;
var a = (x-y)*1;
document.getElementById("myNumber").stepUp(-1);
document.getElementById("demo").innerHTML = a;
}
function myFunctionUp() {
var x = parseInt(document.getElementById("myNumber").value);
var y = 1;
var a = (x+y)*1;
document.getElementById("myNumber").stepUp(1);
document.getElementById("demo").innerHTML = a;
}
<button onclick="myFunctionDown()">-</button>
<input type="number" id="myNumber" value="0">
<button onclick="myFunctionUp()">+</button>
<br/><br/>
$ <span id="demo">0</span>
答案 3 :(得分:2)
首先,您必须将输入值转换为Number
,而无需将其乘以1。使用parseInt
函数进行转换。
<button onclick="myFunctionDown()">-</button>
<input type="number" id="myNumber" value="0">
<button onclick="myFunctionUp()">+</button>
<br/><br/>
$ <span id="demo">0</span>
<script>
function myFunctionDown() {
var x = parseInt(document.getElementById("myNumber").value);
var y = 1;
var a = x-y;
document.getElementById("myNumber").stepUp(-1);
document.getElementById("demo").innerHTML = a;
}
function myFunctionUp() {
var x = parseInt(document.getElementById("myNumber").value);
var y = 1;
var a = x+y;
document.getElementById("myNumber").stepUp(1);
document.getElementById("demo").innerHTML = a;
}
</script>
答案 4 :(得分:1)
执行 <xsl:template match="Case">
<xsl:element name="NumberCase">
<xsl:element name="NumberCase">
<xsl:element name ="Id">
<xsl:value-of select="NumberCase/Id"/>
</xsl:element>
<xsl:element name ="Lastname">
<xsl:value-of select="Document/Lastname"/>
</xsl:element>
<xsl:element name ="ReferenceList">
<xsl:for-each select="Document/ReferenceList">
<xsl:value-of select="concat(.,'')"/>
</xsl:for-each>
</xsl:element>
<xsl:element name="ClaimList">
<xsl:for-each select="Document/ClaimList"/>
<xsl:value-of select="concat(.,'')"/>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
。问题解决了。
原因:
+document.getElementById("myNumber").value
返回x中的 String 值document.getElementById("myNumber").value
时,即x+y
。 JS默认情况下会自动将您的 Number 值转换为字符串,并将'+'解释为连接运算符。您可以对JS使用相同的要求。何时,JS在字符串之前处理“ +”号,并且该字符串除了数字字符外什么也没有。它会转换为数字。
有关详细信息,请参见https://snack.expo.io/SJCGFC477和Addition Operator。
Number + String
function myFunctionDown() {
var x = +document.getElementById("myNumber").value;
var y = 1;
var a = (x-y)*1;
document.getElementById("myNumber").stepUp(-1);
document.getElementById("demo").innerHTML = a;
}
function myFunctionUp() {
var x = +document.getElementById("myNumber").value;
var y = 1;
var a = (x+y)*1;
document.getElementById("myNumber").stepUp(1);
document.getElementById("demo").innerHTML = a;
}