使用 d3.js,我得到一個選擇框的值并將其傳遞給 .scaleThreshold() 的 .range()。
這是選擇框:
<select id="color_scheme">
<option value="d3.schemeOranges[7]">Orange</option>
<select>
這就是我獲取選擇框值的方式:
var color_scheme = d3.select("#color_scheme").property("value");
這是colorScale:
const colorScale = d3.scaleThreshold()
.domain([10, 100, 1000, 10000, 100000, 1000000])
.range(color_scheme);
問題是在這種情況下color_scheme是一個字串,它在 .range() 括號內不起作用。
如果你 console.log 它你只會收到字串d3.schemeOranges[7]。
但是,當您var color_scheme直接對其進行硬編碼時,color_scheme = d3.schemeOranges[7]它會起作用。
如果你 console.log 它你會按預期收到正確的物件:
[
"#fff5eb",
"#fee6ce",
"#fdd0a2",
"#fdae6b",
"#fd8d3c",
"#f16913",
"#d94801",
"#a63603",
"#7f2704"
]
所以問題是:我們如何才能讓選擇值在 .range() 中正常作業?
uj5u.com熱心網友回復:
我建議以下。將您的輸入更改為:
<select id="color_scheme">
<option value="schemeOranges">Orange</option>
<select>
然后在你的js中,使用字串,陣列是:
d3[color_scheme][7]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/479278.html
標籤:javascript 细绳 目的 d3.js
上一篇:此代碼的輸出是什么以及如何輸出?
