我是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()方法是否是此处使用的最佳方法?
感谢。
答案 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);