【问题标题】:sports - title-- -- > {} third-- -- > undefined运动--标题--> {}第三--->未定义
【发布时间】:2017-05-03 04:20:22
【问题描述】:
  • 我是 js 新手
  • 大约 8 小时,我正在尝试调试为什么我得到以下空对象
  • document.getElementsByClassName("sports-title") 在小提琴中工作正常,但是当我放入我的代码库时它不能正常工作。
  • 它像这样返回,所以我无法继续。

    代码库输出 运动--标题---> {} 第三个-->未定义

    小提琴输出

    sports-title---->{"0":{}} 第三---->{}

  • 我使用相同的 html 结构。

  • 你们能告诉我可能是什么问题,以便我继续。
findStringInsideDiv() {

    var sportsTitle = document.getElementsByClassName("sports-title");
    var third = sportsTitle[0];
    var thirdHTML = third.innerHTML



    //str = str.split(" ")[4];
    console.log("sports-title---->" + JSON.stringify(sportsTitle));
        console.log("third---->" + JSON.stringify(third));
    console.log("thirdHTML---->" + JSON.stringify(thirdHTML));


    if ( thirdHTML === " basketball football swimming " ) {

          console.log("matching basketball---->");


      var menu = document.querySelector('.sports');
      menu.classList.add('sports-with-basketball');

      // how to add this class name directly to the first div after body.
      // but we are not rendering that div in accordion
      //is it possible

    }

    else{
    console.log("not matching");
    }

  }

【问题讨论】:

  • 请注意,您的 jsfiddle 示例有一个巨大的语法错误:React.render((<div>...</div>), ...) — 那里的 HTML 需要在字符串中,否则您将得到 "SyntaxError: expected expression, got '<'"

标签: javascript html


【解决方案1】:

如果document.getElementsByClassName("sports-title") 没有返回任何元素,这可能意味着:

  • 您的 HTML 源代码中没有任何带有 class="sports-title" 的元素,可能是因为语法错误、拼写错误等。尝试使用浏览器的 DOM 检查器检查您的网页并查找您认为应该包含的元素在sports-title 类中。

或者

  • 您的 Javascript 在 .sports-title 元素实际添加到文档之前执行,因为脚本(通常)在文档解析期间同步执行,一旦解析器遇到它们。 在定义完所有其他元素后,尝试将 <script> 元素移动到 <body> 的末尾。

可能还有其他我现在想不出的可能原因。

【讨论】:

  • 由于您所说的两个条件都已完美完成,因此是否会因 componentWillMount 而出现问题
  • @texirv 我不知道,因为我对 ReactJS 一无所知
【解决方案2】:

这可能不是答案,但我不能发表评论,所以这里是:

我在搞乱你的 jsFiddle,我注意到如果你将 JSON.stringify(object) 更改为 object.ToString,它们会变成未定义的。所以我的问题是你确定你的代码库中的代码与 jsfiddle 匹配吗?

另外,如果您首先使用 JSfiddle 来制作和测试您的代码,您可以考虑安装 Brackets.io。它有一个漂亮的实时更新功能,让初学者更容易进行 Web 开发,并在浏览器上打开预览。我过去注意到 JSfiddle 并不总是像浏览器一样运行。

【讨论】:

  • 我想你的意思是object.toString()。你会得到undefined for object.ToString 因为.ToString 是该方法的错误名称。 JavaScript 区分大小写
  • 嗯,这就解释了我当时看到的情况
猜你喜欢
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
相关资源
最近更新 更多