Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.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单击dom元素_Javascript_Dom_Onclick_Click - Fatal编程技术网

本地javascript单击dom元素

本地javascript单击dom元素,javascript,dom,onclick,click,Javascript,Dom,Onclick,Click,我需要在本机javascript中调用单击操作。我得到了以下元素: <svg class="pull-right svg-cross ng-isolate-scope" xmlns="http://www.w3.org/2000/svg" data-svg-icon="" icon="cross" ng-click="dismissBanner()"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href=

我需要在本机javascript中调用单击操作。我得到了以下元素:

<svg class="pull-right svg-cross ng-isolate-scope" xmlns="http://www.w3.org/2000/svg" data-svg-icon="" icon="cross" ng-click="dismissBanner()">
    <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#svg-cross"></use>
</svg>

然而,两次尝试都失败了。我得到了错误
uncaughttypeerror:document.getElementsByClassName(…)[0]。onclick不是函数(…)

我还调用了
dismissBanner()函数,则会出现错误:
uncaughtreferenceerror:dismissBanner未定义(…)


我应该如何正确地做到这一点?

看起来这就是工作方法:

angular.element('.svg-cross').trigger('click');
资料来源:

与OP聊天后,我们发现使用的Angular版本是
1.3.17
。对于此版本,触发单击的正确方法如下:

var el = document.getElementsByClassName('pull-right svg-cross ng-isolate-scope')[0];
angular.element(el).triggerHandler('click');

您可以通过向元素分派事件来模拟单击。该()有一个对象,但IE中不支持构造函数。您可以使用不推荐使用的API()来克服这一问题:

函数mock(){
var-evt;
试一试{
evt=新事件(“单击”);
}
捕获(e){
evt=document.createEvent('MouseEvents');
evt.initMouseEvent('click',true,true,window,0,0,0,0,false,false,false,false,false,false,0,null);
}
document.getElementById('trgt').dispatchEvent(evt);
}
不要点击我

点击我嗯,调用此命令时,我得到以下错误:
未捕获错误:[jqLite:nosel]http://errors.angularjs.org/1.3.17/jqLite/nosel(…)
@toom我刚刚更新了答案,只包含一个类名,并将
triggerHandler
更改为
trigger
。你能再试一次吗?我试过你的新建议。不幸的是,它导致了一个错误。我在第一条评论中发布了这个错误。我用铬合金试过了。我甚至通过调用
angular.element('.svg-cross')
Let-us得到了一个错误。
angular.element('.svg-cross').trigger('click');
var el = document.getElementsByClassName('pull-right svg-cross ng-isolate-scope')[0];
angular.element(el).triggerHandler('click');