当所有类不在同一页面上时,无法使用多个属性

时间:2017-07-31 08:16:19

标签: javascript wordpress attributes

尝试使用JavaScript将public function getClientPhone() { $phone = Client::getStaticClientPhone($this->client_id); if ($this->client_id || $phone === null) { return ''; } return $phone; } 属性写入不同的类

onclick

问题是添加一个属性只有当所有类都在一个页面上时才能工作,就像上面的代码一样。但是如果我想在另一个页面上有相同的代码,那么代码的非代码将适用于这两页。我将在控制台中出现此错误: window.onload=function (){ document.getElementsByClassName("sg")[0].setAttribute("onClick", "ga('send', 'event', { eventCategory: 'Submit a form', eventAction: 'Click', eventLabel: 'Contact form submit'});"); document.getElementsByClassName("sm")[0].setAttribute("onClick", "ga('send', 'event', { eventCategory: 'Submit a form', eventAction: 'Click', eventLabel: 'Contact form submit'});"); } '的setAttribute' Cannot read property

这是我的代码:

of undefined at window.onload

3 个答案:

答案 0 :(得分:0)

在尝试调用方法之前测试元素是否存在。

var element = document.getElementsByClassName("foo")[0];
if (element) {
    element.setAttribute(etc, etc);
}

答案 1 :(得分:0)

您可以使用以下内容:

function myEventHandler
{
    ga('send', 'event',
    {
        eventCategory: 'Submit a form',
        eventAction: 'Click',
        eventLabel: 'Contact form submit'
    });
}

['sg','sm','sf'].forEach(function(k)
{
    Array.from(document.getElementsByClassName(k)).forEach(function(o)
    {
        o.addEventListener('click',myEventHandler);
    }
});

无论是否有0,1个或多个元素匹配每个类,这都将有效。

答案 2 :(得分:0)

您可以使用addEventListener来捕获事件

window.addEventListener('click', function($event){
  var eleClasses = $event.target.classList;
  if(eleC.contains("sg") || eleC.contains("sm") || eleC.contains("sf")){
    ga('send', 'event', { eventCategory: 'Submit a form', eventAction: 'Click', eventLabel: 'Contact form submit'})
  }
});