Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当元素发生变化时,如何执行函数?(无设定间隔)_Javascript_Jquery - Fatal编程技术网

Javascript 当元素发生变化时,如何执行函数?(无设定间隔)

Javascript 当元素发生变化时,如何执行函数?(无设定间隔),javascript,jquery,Javascript,Jquery,我已尝试将脚本配置为根据显示的报告类型(即span元素.reportReason)自动单击页面上的某些按钮 下面是一个页面的典型外观示例: (我无法链接该页面对报告进行投票,因为玩游戏必须满足一个过度的要求。) 在对一份报告进行投票后,该网页将删除所有当前报告内容,并通过Jquery从另一份报告加载所有数据。在加载报表时(或报表未加载时),它将#reportInfo的所有子div值设置为“-”,并从#reportContent中删除所有内部span类 这是我的脚本的代码: switch

我已尝试将脚本配置为根据显示的报告类型(即span元素
.reportReason
)自动单击页面上的某些按钮

下面是一个页面的典型外观示例: (我无法链接该页面对报告进行投票,因为玩游戏必须满足一个过度的要求。)

在对一份报告进行投票后,该网页将删除所有当前报告内容,并通过Jquery从另一份报告加载所有数据。在加载报表时(或报表未加载时),它将
#reportInfo
的所有子div值设置为“-”,并从
#reportContent
中删除所有内部span类

这是我的脚本的代码:

    switch ($('.reportReason').text()) {
    case "Inappropriate Username":
        //This is an INAPPROPRIATE USERNAME report
        reportIU();
        break;
    case "Spamming":
        //This is a SPAMMING report
        reportSpamming();
        break;
    case "Leaving":
        //This is a LEAVING report
        reportLeaving();
        break;
    case "Multi-accounting":
        //This is a MULTI-ACCOUNTING report
        reportMulti();
        break;
    default:
        //Report hasn't loaded or report type is 'Other'
        break;
}
我想使switch语句在span元素
.reportReason
的文本每次更改时执行,而不是在设置的间隔后执行。有什么办法可以做到这一点吗?

Tadaa:)

$('#btn')。单击(函数(){
//模拟ajax更改
如果($('div#test').text()!=“a”){
$('div#test')。文本(“a”);
}
} );
$('div#test')。on('domandeinserted',function(){
log('div已更改!');
//做你的变化无常的事
});

分区:
一些随机内容。


如果
.reportReason
是一个表单控件,如输入、文本区域、复选框等,那么在事件中访问其数据要比使用span容易得多。表单控件具有专门的事件,如处理文本的
更改
输入
,但这取决于用户交互,而用户交互可能不适用于您的情况(至少以直接方式)

假设文本本身来自您几乎无法控制或无法控制的源,我们将从
span.reportReason
开始,确定文本何时插入其中。我建议将来您追踪必要的步骤,以找到文本本身的起源。我相信这是一个好消息

为了监控
span.reportReason
发生的更改,我们可以使用。在下面的演示中,将创建一个观察者来检测
span.reportReason
内容的任何更改。它将在添加或删除文本时记录更改。 注意:所有具有
console.log(…)
语句的行都是您应该调用函数的地方。我并没有试图在
开关()中找到这些函数,因此它们被
控制台.log替换,这足以证明代码正常工作

演示 代码中有一些部分标记为:“TEST NOT REQUIRED”(测试不需要),这意味着它仅用于演示目的,解决方案本身不需要它。

var tgt=document.querySelector('.reportReason');
var cfg={
属性:false,
儿童名单:是的,
characterData:true
};
var monitor=新的MutationObserver(功能(更改){
更改。forEach(函数(更改){
console.log();
for(设i=0;i//
$('.reportReason')。在('change',function(){console.log($(this.text()})
上,
$('.reportReason')是什么类型的
是否为
输入
,是否为
div
span
-使用
按钮构建一个小示例查看此处了解更多详细信息-@Pilan这是一个div元素。@DanielKrom这只会导致它重复执行函数并暂停网页。我正在寻找只执行切换函数的东西每次
.reportReason
的文本更改后,我都会进行一次初始化。我一到家就一定要测试一下。现在回家吧!:D@LordNazo当然,看一看-例如
span.bla
all
span
s与class
bla
看这个@Pilan就在我的opinion@Emeeus更新你的小提琴(缺少jQuery)-