1

我正在为一个需要在一个页面上显示 125 个下拉菜单的客户开发一个项目。我当然不会手动添加所有这些,所以我写了一个简单的for表达式来为我做。这适用于绝大多数下拉菜单(只是select标签),但有些根本不显示。而且每次都是一样的三个。为什么这三个永远不会被渲染?在 Chrome Dev Tools 的 Elements 视图中查看时,它显示下拉菜单位于 DOM 中,但未显示。我一遍又一遍地查看这段代码,我看不出它有什么问题,需要第二双眼睛吗?这里发生了什么?(注意: db/get-all-advertisers永远不会返回nil)这是我正在谈论的代码和图片:

编辑:原来这是我所有 Ubuntu 机器上的浏览器或图形或其他东西的一些绝对奇怪的错误。无法在我朋友的 Mac 上复制该错误。一切正常。

(def new-issue-html
  (hiccup/html
   [:html
    [:head
     [:title "Add an Issue"]
     [:meta {:name "viewport" :content "width=device-width, initial-scale=1.0"}]
     [:link {:rel "stylesheet" :href "css/bootstrap.min.css"}]
     [:link {:rel "stylesheet" :href "css/extra.css"}]
     [:script {:src "js/field-verify.js"}]]
    (let [advertisers (db/get-all-advertisers)]
        [:body
         [:div {:class "container-fluid center"}
          [:h1 "Add an Issue"]
          (conj
           [:form {:method "post" :name "newIssueForm" :action "/new-issue"}
            [:div
             [:label {:for "issue-date"} "Issue Time Period (i.e. \"July/August 2020\"): "]]
            [:div
             [:input {:id "issue-date" :name "issue-date" :style "margin-bottom: 10px;"}]]]
           (for [num (range 1 (inc NUM_OF_ADVERTISERS_PER_ISSUE))
                 :let [ad-slot [:div
                                [:label {:style "margin-right: 10px;" :for (str "ad-slot-" num)} (str num ": ")]
                                (conj
                                 [:select {:id (str "ad-slot-" num) :name (str "ad-slot-" num)}]
                                 (for [advertiser advertisers
                                       :let [option [:option {:value (:advertisers/advertiser_id advertiser)}
                                                     (:advertisers/advertiser_name advertiser)]]]
                                   option))]]]
             ad-slot)
           (anti-forgery-field)
           [:div {:style "margin-top: 10px;"}
            (hf/submit-button {:id "submit" :onclick "return checkForm()"} "Create Issue")])]])]))

问题截图

4

1 回答 1

0

您可以将 s 包装for在 adoall中以强制实现惰性序列

/编辑:

这可能是因为与 GPU 硬件加速和双显示器相关的 Chromium 错误。. 许多人会遇到“仅限 Linux:空 SELECT 下拉菜单”。

错误线程指出它与双监视器有关。一个解决方案是让右边的显示器比左边的小:

不同尺寸的显示器

另一个(不是每个人都成功)解决方案是根据this answer禁用硬件加速:

总结是你需要去Chrome中的“设置”然后“高级设置”,然后取消选中硬件加速框。

于 2020-11-16T13:32:44.770 回答