2017-04-21 163 views
-1

這裏是我的代碼:變量JavaScript函數

$('#date').pickadate({ 
    format: 'mmmm d, yyyy', 
    disable: [ 
     1, 2, 3, 4, 5 
    ] 
}); 

「禁用」是指將禁用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?我怎樣才能做到這一點?謝謝。

+0

有沒有錯誤?你能在jsfiddle.net網站上創建一個jsfiddle嗎?這會讓我們更容易幫助你。 –

回答

4

它可能預計的數字,而不是用逗號的字符串:

[ "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 
}); 
+0

反而把它作爲Number而不是parseInt。只是一種感覺。你怎麼看? –

+0

@AkshayKhandelwal我認爲結果是一樣的,不是嗎? ¯\ _(ツ)_ /¯ –

+0

是的。你也考慮過基數作爲小數。有趣。現在我覺得你的代碼是完美的。這是有道理的。您不能使用float作爲日期。謝啦。增加知識。 –

1

因爲當你從它們的值中得到它們時,你需要一個數組。

$('#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>

現在你可以在那裏使用變量。

+0

嗯..錯過了那部分:) 好,你指出了它。 –

+0

一定要看看aletzo的答案:您需要直接將'numbers'變量傳遞給'disable',而不是在另一個數組內。 – Hissvard

0
var numbers = document.getElementById('numbers').value; 

現在數字包含一個字符串,所以你必須將它轉換爲一個數組。也許是這樣的:

numbers = numbers.split(', '); 

你可以這樣做:

disable: numbers 

而不是這個(!):

disable: [ 
    numbers 
] 
+0

這不工作? – baileyJchoi

+0

對不起,我不確定你的問題 – aletzo

+0

我試過這個,但它不起作用 – baileyJchoi

1

在您的代碼:

var numbers = document.getElementById('numbers').value; 

號不是一個數組,它是一個值爲「1,2,3,4,5」的字符串。爲了使一個數組,你需要使用分割功能:

var numbersArray = numbers.split(','); 

然後你可以使用numbersArray與禁用,像這樣:

$('#date').pickadate({ 
    format: 'mmmm d, yyyy', 
    disable: numbersArray 
}); 
1

您正在創建一個數組,其中一個項的值爲「1,2,3,4,5」

而您需要的是包含5個元素的數組,其中每個項都是一個數字。

例子:

var numbers = document.getElementById('numbers').value.split(',') 
$('#date').pickadate({ 
    format: 'mmmm d, yyyy', 
    disable: numbers 
}); 

但這個代碼將會給你一個數組,其中每個項目是一個字符串,所以你需要分析每一個與parseInt函數()