从DOM中检索所有可滚动元素

时间:2015-08-13 01:06:20

标签: javascript css dom

我是javascript的新手,作为chrome扩展内容脚本的一部分,我试图在DOM元素滚动时调用内容脚本函数。我在选择具有特定条件的DOM元素时遇到了困难:

以[迈克的解决方案] [1]:

为基础

var condition1 =" [overflow =' auto']&#34 ;;
    var condition2 =" [overflow =' scroll']&#34 ;;
    var condition3 = clientHeight + border小于offsetHeight(不确定语法)
    var condition 4 = clientWidth + border小于offsetWidth

//store elements matching conditions in arrays
var scrollable = Array.prototype.slice.call(document.querySelectorAll(condition1)); //convert nodelist into array
var scrollable2 = Array.prototype.slice.call(document.querySelectorAll(condition2));
var scrollable3 = Array.prototype.slice.call(document.querySelectorAll(condition3));
var scrollable4 = Array.prototype.slice.call(document.querySelectorAll(condition4));

    //concatenate arrays for a collection of desired elements
    var scrollable = scrollable.concat(scrollable2).concat(scrollable3).concat(scrollable4);

我应该如何构建条件3和4的语句?

是否可以使用||组合这些条件操作

querySelectorAll()方法是否是此处使用的最佳方法?

感谢。

1 个答案:

答案 0 :(得分:0)

  

问:我应该如何构建条件3和4的语句?

呃......我不认为会有css选择器可以像那样计算......让我做一些搜索并尝试找出一些解决方案......先下去...... / p>

  

问:是否可以使用||组合这些条件操作

是。函数选择器的参数是一个包含一个或多个用逗号分隔的CSS选择器的字符串。有关详细信息,请参阅Document.querySelectorAll()

所以你可以使用:

$sql = "
SELECT log.id, (student.id) as ids, student.name, student.year, student.section, log.date_log, log.time_log, log.ampm, log.status_log, section.sec_name, event.event_name AS event
FROM log 
    INNER JOIN student ON student.cardcode = log.stud_id 
    INNER JOIN section ON section.id = student.section
    INNER JOIN event ON log.date_log = event.date
ORDER BY log.id DESC limit $start,$per_page"; 
  

问:querySelectorAll()方法是否是此处使用的最佳方法?

是的,我认为这是一个好方法。

注意:查看Array.prototype.concat()。你不需要做

var condition = [condition1, condition2, condition3, condition4].join(', ');
var scrollable = Array.prototype.slice.call(document.querySelectorAll(condition));

相反,你可以做

var scrollable = scrollable.concat(scrollable2).concat(scrollable3).concat(scrollable4);