我正在尝试在当前页面的股票价格发生变化时获得控制台日志。
页: https://www.google.com/finance?q=NASDAQ%3AGOOG&ei=yvbRVbHSCcKgmAGyu7CoDA
元素ID: #price-panel> div> span>跨度
尝试1: 失败
$("#price-panel div span span").onchange = function() { console.log('change')}
尝试2: 失败
document.getElementById('price-panel').children[0].children[0].onchange = function() { console.log('change')}
builtwith.com说javascript是“google api”,这对谷歌搜索来说是不明确的,所以这没什么用。
我可以观察哪些事件可以找出这个元素何时发生变化?
答案 0 :(得分:4)
span
个元素没有onchange
个事件。您可以做的一件事是引入一个循环来定期检查当前内容以及之前保存的内容,如果两者不同,则执行一些操作:
var content = null,
$element = $("#price-panel div span span");
setInterval(function() {
var currentText = $element.text();
if (currentText != content) {
// A change has happened
console.log("Change");
content = currentText;
}
}, 30000 /* check every 30 seconds */);
答案 1 :(得分:3)
在<span>
尝试收听var span = document.querySelector('#test');
var text = document.createTextNode('tttt');
// This may be deprecated.
span.addEventListener('DOMCharacterDataModified', function() {
alert('span text changed to: ' + this.innerHTML);
});
// You may use MutationObserver instead.
var mutateObserver = new MutationObserver(function(records) {
console.log(records);
});
mutateObserver.observe(span, {
childList: true, // capture child add/remove on target element.
characterData: true, // capture text changes on target element
subtree: true, // capture childs changes too
characterDataOldValue: true // keep of prev value
});
setTimeout(function() {
span.innerHTML ='SSSS';
}, 2000);
setTimeout(function() {
span.appendChild(text);
}, 3000);
setTimeout(function() {
text.data = '3123';
}, 4000);
中的文字更改时,Dom Events可以使用DOMCharacterDataModified。
或者您可以使用MutationObserver来捕获更改。
<span id="test">This is a span</span>
&#13;
library(dplyr)
library(reshape2)
library(tidyr)
DT %>%
mutate(id = 1:n()) %>%
melt(id.vars = c('id')) %>%
mutate(Group = substr(variable, 1, 3)) %>%
group_by(id, Group) %>%
summarise(tot = sum(value)) %>%
spread(Group, tot) %>%
select(-id)
&#13;