在 <p> 标签内更改值时调用函数

IT技术 javascript html
2021-02-23 05:23:57

当段落标记的值更改时,JavaScript 中有什么方法可以调用函数。

概述:

HTML:

<p id="timer">00:00</p>
<button onclick="change()">My Button</button>

JS:

function change() {
  document.getElementById("timer").innerHTML = "00:01";
}

function hello() {
  alert("Hello");
}

我想在段落值更改时发出警报(“你好”)。类似于检查段落值变化的连续函数。

4个回答

您可以使用MutationObservercharacterData选项设置为true

<script>
  function change() {
    document.getElementById("timer").innerHTML = "00:01";
  }

  function hello() {
    alert("Hello");
  }
  window.onload = function() {

    var target = document.querySelector("p");

    var observer = new MutationObserver(function(mutations) {
      mutations.forEach(function(mutation) {
        hello()
      });
    });

    var config = {
      childList: true,
      subtree: true,
      characterData: true
    };

    observer.observe(target, config);
  }
</script>

<p id="timer">00:00</p>
<button onclick="change()">My Button</button>

试试这个 MutationObserver API,(也检查这个简单的例子

var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
        //value changed, call the other API
        hello();
    });    
});
var observerConfig = {
    characterData: true //since only the node-value needs to be checked in your case
}; 
var targetNode = document.getElementById("timer");
observer.observe(targetNode, observerConfig);

演示

var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;

var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
    //value changed, call the other API
    if ( mutation.type="childList" )
    {
       hello();
       //observer.disconnect();
    }
  });
});
var observerConfig = {
	childList: true
};
var targetNode = document.body;
observer.observe(targetNode, observerConfig);


document.getElementById("timer").innerHTML = "0.2";

window.hello = function (){
  alert(1);
}
<p id="timer">0.0</p>

执行此操作的另一种选择

function change() {
  document.getElementById("timer").innerHTML = new Date().getTime();
}

var prevValue = document.getElementById("timer").innerHTML;

setInterval(function() {

  currValue = document.getElementById("timer").innerHTML;

  if (prevValue != currValue) {
    prevValue = currValue;
    hello();

  }

}, 1);

function hello() {
  alert("Hello");
}
<p id="timer">00:00</p>
<button onclick="change()">My Button</button>

尝试使用 onchange 属性,或者这个属性可以帮助您:

使用 javascript 向 HTML 元素添加事件处理程序

p 标签不支持w3schools.com/jsref/event_onchange.asp更改事件
2021-05-05 05:23:57
我说也许这个可以帮助你或另一个链接!
2021-05-05 05:23:57
@Tesla,感谢您的分享,但我正在寻找类似 MutationObserver 的东西。干杯:)
2021-05-13 05:23:57