【问题标题】:How to get the parts of Elements?如何获得元素的零件?
【发布时间】:2019-11-12 07:16:16
【问题描述】:

我现在正在为一个事件过程的网站做结构化数据,这个网站的信息如下:

<div class="schedule">
  <p><span class="fwb">Date</span>: 22-Nov(Friday) 15:00-17:00</p>
  <p><span class="fwb">Location</span>: ABC Street</p>
</div>

我想用getElement方法为startDate创建一个变量

"startDate": "{{data}}" -->

"startDate": "2019-11-22T15:00"

我预计 11 月 22 日(星期五)15:00-17:00 的输出为 2019-11-22T15:00

"streetAddress": "{{data}}"  --->

"streetAddress": "ABC Street" 

等等

有可能吗?非常感谢

*备注:我没有权限更改源页面,因为我只是一个谷歌标签管理器管理员

【问题讨论】:

    标签: javascript data-structures


    【解决方案1】:

    我们可以这样做,

    let startDate = document.getElementsByTagName('p');
    console.log(new Date(startDate[0].innerText.replace(/.*Date:/,'')))
    

    结果:

     Fri Nov 23 2001 13:30:00 GMT+0530 (India Standard Time)
    

    如您所见,结果数据不准确,因为我们提供给 JavaScript 的 new Date() 函数的数据不正确。

    如果您想转换日期/时间格式,请先尝试传递准确的数据。您的数据当前错过了这一年。

    如果您仍然想要预期的结果,我们现在可以对年份进行硬编码

    let withYear = startDate[0].innerText.replace(/.*Date:/,'')
    withYear  = withYear  + '2019'
    
    console.log(new Date(withYear))
    

    结果:

    Sat Nov 23 2019 13:30:00 GMT+0530 (India Standard Time)
    

    干杯,编码愉快:)

    【讨论】:

      【解决方案2】:
      1. 使用正则表达式查找日期和地址(以 : 开头,以换行符结尾)
      2. 使用 toISOString() 方法转换日期

      let data=document.querySelector(".schedule").innerHTML
      let patt=/:.*/
      let startDate=data.split('</p>')[0].match(patt)[0].slice(2)
      let address=data.split('</p>')[1].match(patt)[0].slice(2)
      let date = new Date(startDate.slice(0,20)+new Date().getFullYear()); 
      let isoDate = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toISOString().slice(0,16);
      document.querySelector(".output").innerHTML="StartDate=> {"+isoDate+"}<br/>Address=> {"+address+"}"
      <div class="schedule">
           <p><span class="fwb">Date</span>: 22-Nov(Firday) 15:00-17:00</p>
           <p><span class="fwb">Location</span>: ABC Street</p>
      </div>    
      
      <div class="output"></div>
          

      阅读更多:

      【讨论】:

        猜你喜欢
        • 2019-09-02
        • 2016-12-16
        • 1970-01-01
        • 2019-06-17
        • 1970-01-01
        • 2017-09-01
        • 2021-10-15
        • 2018-09-13
        • 1970-01-01
        相关资源
        最近更新 更多