首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查对象是否包含值0并注入DOM

检查对象是否包含值0并注入DOM
EN

Stack Overflow用户
提问于 2020-06-09 12:51:26
回答 1查看 127关注 0票数 0

我有一个对象,我想:

  1. 循环通过对象
  2. 检查是否有任何值=== 0
  3. ,然后只将该键值注入到DOM.

中。

但是,当我循环遍历对象时,这个值会被注入DOM两次(可能是因为对象中有两个键/值)。但我只希望注入一次,因为显然只有一个键,其值为=== 0。

(另一个=== 1)

这里有一个例子:

代码语言:javascript
复制
window.gaData['UA-123'].experiments = {
  TestA: "1"
  TestB: "0"
}

,我就是这样循环的:

代码语言:javascript
复制
 Object.keys(window.gaData["UA-123"].experiments).forEach(function(key, value) {
    if (window.gaData["UA-123"].experiments[key] == 0) {

      console.log(`${key}: ${value}`);

      result += `
        <div>
          <p value="${key}">${key}:Test: ${key} is set to value: ${value}</p>
        </div>
        `
      document.getElementById('container').innerHTML = result;
    }
  });

我做错了什么?

在我的DOM中,我会看到:

代码语言:javascript
复制
"Test: TestB is set to value: 0"
"Test: TestB is set to value: 0"

而不是仅仅一次。

如果我的对象增长并且有多个键,值为0,那么当然,我也希望显示这些键。

但到目前为止,我不希望在DOM中两次显示我的值。

谢谢。

我正在创建一个chrome扩展,下面是完整的代码:

代码语言:javascript
复制
var actualCode = '(' + function() {
  var dataLayer = window.dataLayer;
  console.log('WINDOW', window);
  // console.log('DATALAYER', dataLayer);

  let result = '';

 Object.keys(window.gaData["UA-123"].experiments).forEach(function(key, value) {
if (window.gaData["UA-123"].experiments[key] == 0) {

  console.log(`${key}: ${value}`);

  result += `
    <div>
      <p value="${key}">${key}:Test: ${key} is set to value: ${value}</p>
    </div>
    `
  document.getElementById('container').innerHTML = result;
  }
 });

  if (dataLayer.ABTest) {
    console.log('True');

    if (dataLayer.ABTest.test) {
        console.log(dataLayer.ABTest.test);

        result += `
          <div class="container">
            <p>Date Launched: ${dataLayer.animal.test.date}</p>
            <p>Test ID: ${dataLayer.animal.test.id}</p>
            <p>Test Description: ${dataLayer.animal.test.name}</p>
            <p>Variant Active: ${dataLayer.animal.test.variant}</p>
            <button id="${dataLayer.animal.test.id}">Switch variant</button>
          </div>
          `
        document.getElementById('container').insertAdjacentHTML('beforeend', result);
        document.getElementById(dataLayer.animal.test.id).addEventListener('click', function() {
          console.log('clicked!')
          // Delete
          window.document.cookie = '_gaexp=COOKIE-1; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain=.abc.co.uk'
          // Add
          window.document.cookie = '_gaexp=COOKIE-2; expires=Fri, 19 Jun 2020 20:47:11 UTC; path=/; domain=.abc.co.uk'
          window.location.reload(); 
      });
    }
  }
} + ')();';
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-09 13:32:32

代之以:

代码语言:javascript
复制
if (window.gaData["UA-123"].experiments[key] == 0) {

在这方面:

代码语言:javascript
复制
if (window.gaData["UA-123"].experiments[key] == "0") {

您的数据包含字符串,而不是整数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62283065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档