2016-12-14 4 views
-2

У меня есть следующий выбор в HTML:Проверяется отборное пуст

<div id="myselect"> 
    Results 
    <select></select> 
</div> 

И я заполнить его с данными из базы данных, если какой-либо, а затем я хочу, чтобы проверить, если он имеет какой-либо элемент, так что я:

var myselect = d3.select('#myselect select'); 
var r = myselect.datum(); 
if(r.option.length != 0) { 
    ... 
} 

проблема здесь в том, что myselect массив, который я знаю, что он имеет только один элемент. Я думал, что datum() был способ получить это значение, но это делает r null.

+4

Try F12 и console.log (myselect) – mplungjan

ответ

2

Вы можете использовать selection.empty(), чтобы определить, является ли пустой выбор.

const isEmpty = d3.selectAll("div").empty(); 

Для вас, например, вы, вероятно, хотите что-то подобное. То, что вы делаете, проверяет, является ли выбор пустым или нет, а затем захватывает фактический HTMLElement из этого выбора, используя selection.node().

var myselect = d3.select('#myselect select'); 
if (!myselect.empty()) { 
    var node = myselect.node(); 
    var options = node.options; 
    if (options.length > 0) { 

    } 
} 

datum() функция используется по-разному, что будет возвращать данные объекта, что выбор был связан. Например, если вы сделали:

d3.selectAll("div") 
    .data(["A", "B", "C"]) 
    .enter() 
    .append("div") 
    .attr("class", function(d) { return d; }); // will return a letter 

// Go select a div and grab the data object it's bound to 
// which will return the array item "B", but this could have 
// equally been a complex object 
d3.select("div.B").datum(); 
1

Похоже, вы пытаетесь получить необработанный элемент HTMLSelectElement для своего <select>. Попробуйте использовать .node():

var myselect = d3.select('#myselect select'); 
var r = myselect.node(); 
if (r.options.length != 0) { // options, not option? 
    ... 
} 
-1

Вы можете просто проверить options длину select тега с помощью простого JavaScript:

var myselect = document.getElementById('myselect'); 
if(myselect.getElementsByTagName('select')[0].options.length!=0){ 
    //your code here 
} 
Смежные вопросы