我正在为一个需要在一个页面上显示 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")])]])]))