首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从DOM /BuckleScript querySelector中选择元素

从DOM /BuckleScript querySelector中选择元素
EN

Stack Overflow用户
提问于 2018-01-12 17:12:15
回答 1查看 955关注 0票数 2

如何使用理性从DOM中选择项。我在DOM绑定中使用bs-webapi,这里是我想要做的:

代码语言:javascript
复制
let parent = document |> Document.querySelector(".parent");
let child = Element.querySelector(".child", parent);

但是,BuckleScript抱怨是因为父类型不是正确的。它说父母是option(Dom.element)类型的,父母应该是Dom.element.t。我对理性和尝试学习都很陌生。我不明白option(Dom.element)是什么意思,也不明白如何使上面的代码块工作。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-12 18:01:44

您需要打开选项变体,我们可以通过开关来实现这一点,并使用内置的None/某些变体。

您可以在这里找到一些关于选项变体的文档:https://reasonml.github.io/docs/en/newcomer-examples.html#using-the-option-type

下面是关于选项的更多文档:https://reasonml.github.io/docs/en/variant.html#option

要做到这一点,您可以将代码更改为如下内容:

代码语言:javascript
复制
let parent = document |> Document.querySelector(".parent");
let child = switch (parent) {
  | Some(p) => switch (Element.querySelector(".child", p)) {
    | Some(c) => c
    | None => raise(Failure("Unable to find child selector"))
  }
  | None => raise(Failure("Unable to find parent selector"))
};

如果您想要登录到控制台而不是失败,则需要返回一个有效的Dom.element.t,它可能如下所示:

代码语言:javascript
复制
let emptyEl = document |> Document.createElement("noscript");
let parent = document |> Document.querySelector(".parent");
let child = switch (parent) {
  | Some(p) => switch (Element.querySelector(".child", p)) {
    | Some(c) => c
    | None => {
      Js.log("Unable to find child selector");
      emptyEl;
    }
  }
  | None => {
    Js.log("Unable to find parent selector");
    emptyEl;
  }
};

然后,您需要检查您的子元素是否是noscript,以确定您是否找到了要查找的子元素。

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

https://stackoverflow.com/questions/48230991

复制
相关文章

相似问题

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