Javascript 函数中的变量
Variable in Javascript function
这是我的代码:
$('#date').pickadate({
format: 'mmmm d, yyyy',
disable: [
1, 2, 3, 4, 5
]
});
"disable" 意味着它将禁用第 1、2、3、4 和 5 周的日子。这是不起作用的代码:
<input type="text" id="numbers" value="1, 2, 3, 4, 5">
<script>
var numbers = document.getElementById('numbers').value;
$('#date').pickadate({
format: 'mmmm d, yyyy',
disable: [
numbers
]
});
</script>
我想使用变量中的数字,因为它可以是动态的。为什么它不适用于变量 numbers
?我怎样才能做到这一点?谢谢。
因为当您从字符串值中获取它们时,您需要一个数组。
$('#getinfo').on('click',function(){
var numbers = document.getElementById('numbers').value;
numbers = numbers.split(' ').join(); // remove spaces
numbers = numbers.split(','); // convert to array
alert(numbers);
console.log(numbers);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="numbers" />
<button id="getinfo">Get Info</button>
现在你可以在那里使用变量了。
var numbers = document.getElementById('numbers').value;
现在 numbers 包含一个字符串,因此您必须将其转换为数组。大概是这样的:
numbers = numbers.split(', ');
你可以这样做:
disable: numbers
而不是这个 (!):
disable: [
numbers
]
在您的代码中:
var numbers = document.getElementById('numbers').value;
numbers 不是一个数组,它是一个值为“1,2,3,4,5”的字符串。要使其成为数组,您需要使用拆分函数:
var numbersArray = numbers.split(',');
然后你可以像这样使用 numbersArray with disable:
$('#date').pickadate({
format: 'mmmm d, yyyy',
disable: numbersArray
});
可能需要数字,而不是带逗号的字符串:
[ "1, 2, 3, 4" ] !== [1, 2, 3, 4]
试试这个:
var numbers = document.getElementById('numbers').value.split(',').map(function(val) {
return parseInt(val.trim(), 10);
});
$('#date').pickadate({
format: 'mmmm d, yyyy',
disable: numbers
});
您正在创建一个数组,其中有一项是值为“1, 2, 3, 4, 5”的字符串
而您需要的是一个包含 5 个元素的数组,其中每个元素都是一个数字。
示例:
var numbers = document.getElementById('numbers').value.split(',')
$('#date').pickadate({
format: 'mmmm d, yyyy',
disable: numbers
});
但是这段代码会给你一个数组,其中每一项都是一个字符串,所以你需要用 parseInt()
来解析每一项
这是我的代码:
$('#date').pickadate({
format: 'mmmm d, yyyy',
disable: [
1, 2, 3, 4, 5
]
});
"disable" 意味着它将禁用第 1、2、3、4 和 5 周的日子。这是不起作用的代码:
<input type="text" id="numbers" value="1, 2, 3, 4, 5">
<script>
var numbers = document.getElementById('numbers').value;
$('#date').pickadate({
format: 'mmmm d, yyyy',
disable: [
numbers
]
});
</script>
我想使用变量中的数字,因为它可以是动态的。为什么它不适用于变量 numbers
?我怎样才能做到这一点?谢谢。
因为当您从字符串值中获取它们时,您需要一个数组。
$('#getinfo').on('click',function(){
var numbers = document.getElementById('numbers').value;
numbers = numbers.split(' ').join(); // remove spaces
numbers = numbers.split(','); // convert to array
alert(numbers);
console.log(numbers);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="numbers" />
<button id="getinfo">Get Info</button>
现在你可以在那里使用变量了。
var numbers = document.getElementById('numbers').value;
现在 numbers 包含一个字符串,因此您必须将其转换为数组。大概是这样的:
numbers = numbers.split(', ');
你可以这样做:
disable: numbers
而不是这个 (!):
disable: [
numbers
]
在您的代码中:
var numbers = document.getElementById('numbers').value;
numbers 不是一个数组,它是一个值为“1,2,3,4,5”的字符串。要使其成为数组,您需要使用拆分函数:
var numbersArray = numbers.split(',');
然后你可以像这样使用 numbersArray with disable:
$('#date').pickadate({
format: 'mmmm d, yyyy',
disable: numbersArray
});
可能需要数字,而不是带逗号的字符串:
[ "1, 2, 3, 4" ] !== [1, 2, 3, 4]
试试这个:
var numbers = document.getElementById('numbers').value.split(',').map(function(val) {
return parseInt(val.trim(), 10);
});
$('#date').pickadate({
format: 'mmmm d, yyyy',
disable: numbers
});
您正在创建一个数组,其中有一项是值为“1, 2, 3, 4, 5”的字符串
而您需要的是一个包含 5 个元素的数组,其中每个元素都是一个数字。
示例:
var numbers = document.getElementById('numbers').value.split(',')
$('#date').pickadate({
format: 'mmmm d, yyyy',
disable: numbers
});
但是这段代码会给你一个数组,其中每一项都是一个字符串,所以你需要用 parseInt()
来解析每一项