我有一个输入字段@echo off
:label
setlocal enabledelayedexpansion
set "source=C:\Users\smorheng\Desktop\1\"
set "dest=D:\destination\folder"
set /a cnt=0
for /f "tokens=*" %%a in ('dir /S /B /A-D "%source%*.pdf"') do for /f "tokens=*" %%b in ('dir /B "%%a"') do if exist "%dest%\%%b" (
set "ext=%%~xa"
set "fname=%%~na"
if exist "%dest%\!fname!(!cnt!)!ext!" (set /a cnt=!cnt!+1)
set /a cnt=!cnt!+1
echo move "%%a" "%dest%\!fname!(!cnt!)!ext!"
) else echo move "%%a" "%dest%\%%b"
endlocal
timeout 6>nul
goto :label
,您可以在下面的代码段中看到它,这似乎可行,但是有一个错误。
当您插入89时,它会工作并返回应有的最大值。
但是,如果第一个数字在7以下,则该数字不起作用(69以下的任何数字)。它仅比较第一个数字,而不比较最后一个数字。
如何正确使用它?
谢谢!
number
答案 0 :(得分:2)
也许在比较之前将值转换为整数 像这样:
<input type="number" name="teste" id="teste" value="0" min="0" max="7" onchange="javascript: if (parseInt(this.value) > this.max) this.value = this.max;" />
答案 1 :(得分:0)
HTML属性只能包含文本(不能包含其他类型),因此您正在做lexicographical order。请比较:
console.log("27" > "7");
console.log(27 > 7);
由于按字母顺序对数字进行排序不是很有用,因此您可以extract numbers from strings:
console.log("27", typeof "27");
console.log(parseInt("27", 10), typeof parseInt("27", 10));
现在,在大多数情况下,第二个参数(基数或基数)应该默认为10,但设置时应明确避免出现意外情况。
答案 2 :(得分:0)
考虑代码:if (this.value > this.max) this.value = this.max;
在函数中,使用 input 和 max 的值并将其作为文本(或字符串数据类型)进行比较。您的意图是比较数字。该示例执行以下操作:
HTML:
<body>
Result: <p id="result">0</p>
<input type="number" name="teste" id="teste"
value="0" min="0" max="7"
onchange="test(this)" />
<script src="test.js"></script>
</body>
test.js:
function test(elmnt) {
console.log(typeof elmnt.value); // this returns "string"
console.log(typeof elmnt.max); // this returns "string"
// convert string numbers to integer numbers
let intVal = parseInt(elmnt.value);
let maxInt = parseInt(elmnt.max);
console.log("Input: " + intVal);
if (intVal > maxInt) {
intVal = maxInt;
}
console.log("Result: " + intVal);
document.getElementById("result").innerHTML = intVal;
}