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()

来解析每一项