c0af5f216f8ff00466f0d222cede7f491fd17d81
galt
  Fri Jan 20 23:09:35 2023 -0800
More fixes for stuff found by htmlCheck, refs #7914

diff --git src/hg/hgTables/mainPage.c src/hg/hgTables/mainPage.c
index 316c06e..4642703 100644
--- src/hg/hgTables/mainPage.c
+++ src/hg/hgTables/mainPage.c
@@ -111,31 +111,31 @@
 makeRegionButtonExtraHtml(val, selVal, NULL);
 }
 
 struct grp *showGroupField(char *groupVar, char *event, char *groupScript,
     struct sqlConnection *conn, boolean allTablesOk)
 /* Show group control. Returns selected group. */
 {
 struct grp *group, *groupList = fullGroupList;
 struct grp *selGroup = findSelectedGroup(groupList, groupVar);
 hPrintf("<B>group:</B>\n");
 hPrintf("<SELECT NAME=%s id='%s'>\n", groupVar, groupVar);
 jsOnEventById(event,groupVar,groupScript);
 for (group = groupList; group != NULL; group = group->next)
     {
     if (allTablesOk || differentString(group->name, "allTables"))
-        hPrintf(" <OPTION VALUE=%s%s>%s\n", group->name,
+        hPrintf(" <OPTION VALUE=%s%s>%s</OPTION>\n", group->name,
                 (group == selGroup ? " SELECTED" : ""),
                 group->label);
     }
 hPrintf("</SELECT>\n");
 return selGroup;
 }
 
 static void addIfExists(struct hash *hash, struct slName **pList, char *name)
 /* Add name to tail of list if it exists in hash. */
 {
 if (hashLookup(hash, name))
     slNameAddTail(pList, name);
 }
 
 struct slName *getDbListForGenome()
@@ -168,31 +168,31 @@
                                boolean disableNoGenome)
 /* Show track control. Returns selected track. */
 {
 struct trackDb *track, *selTrack = NULL;
 if (trackScript == NULL)
     trackScript = "";
 if (sameString(selGroup->name, "allTables"))
     {
     char *selDb = findSelDb();
     struct slName *dbList = getDbListForGenome(), *db;
     hPrintf("<B>database:</B>\n");
     hPrintf("<SELECT NAME=\"%s\" id='%s'>\n", trackVar, trackVar);
     jsOnEventById(event, trackVar, trackScript);
     for (db = dbList; db != NULL; db = db->next)
 	{
-	hPrintf(" <OPTION VALUE=%s%s>%s\n", db->name,
+	hPrintf(" <OPTION VALUE=%s%s>%s</OPTION>\n", db->name,
 		(sameString(db->name, selDb) ? " SELECTED" : ""),
 		db->name);
 	}
     hPrintf("</SELECT>\n");
     }
 else
     {
     boolean allTracks = sameString(selGroup->name, "allTracks");
     hPrintf("<B>track:</B>\n");
     hPrintf("<SELECT NAME=\"%s\" id='%s'>\n", trackVar, trackVar);
     jsOnEventById(event, trackVar, trackScript);
     if (allTracks)
         {
 	selTrack = findSelectedTrack(fullTrackList, NULL, trackVar);
 	slSort(&fullTrackList, trackDbCmpShortLabel);
@@ -316,35 +316,36 @@
     if (track != NULL)
 	tdb = findTdbForTable(database,track,name->name, ctLookupName);
     hPrintf("<OPTION VALUE=\"%s\"", name->name);
     // Disable options for related tables that are noGenome -- if a non-positional table
     // is selected then we output its entire contents.
     if (cartTrackDbIsNoGenome(database, name->name) &&
         (track == NULL || differentString(track->table, name->name)))
         hPrintf(" DISABLED"NO_GENOME_CLASS);
     else if (sameString(selTable, name->name))
         {
         hPrintf(" SELECTED");
         selTdb = tdb;
         }
     if (tdb != NULL)
 	if ((curTrack == NULL) || differentWord(tdb->shortLabel, curTrack->shortLabel))
-	    hPrintf(">%s (%s)\n", tdb->shortLabel, name->name);
+	    hPrintf(">%s (%s)", tdb->shortLabel, name->name);
 	else
-	    hPrintf(">%s\n", name->name);
+	    hPrintf(">%s", name->name);
     else
-	hPrintf(">%s\n", name->name);
+	hPrintf(">%s", name->name);
+    hPrintf("</OPTION>\n");
     }
 hPrintf("</SELECT>\n");
 if (!trackHubDatabase(database))
     {
     char *restrictDate = encodeRestrictionDateDisplay(database,selTdb);
     if (restrictDate)
 	{
 	hPrintf("<A HREF=\'%s\' TARGET=BLANK>restricted until:</A>&nbsp;%s",
 		    ENCODE_DATA_RELEASE_POLICY, restrictDate);
 	freeMem(restrictDate);
 	}
     }
 return selTable;
 }
 
@@ -371,31 +372,31 @@
 	    {
 	    otInOtList = TRUE;
 	    break;
 	    }
     if (! otInOtList)
 	outputType = otDefault->name;
     }
 hPrintf("<SELECT id='outputTypeDropdown' NAME=\"%s\">", hgtaOutputType);
 for (ot = otList; ot != NULL; ot = ot->next)
     {
     hPrintf(" <OPTION VALUE=%s", ot->name);
     if (sameString(ot->name, outputType))
 	hPrintf(" SELECTED");
     if (sameString(ot->name, outBed) || sameString(ot->name, outWigBed))
         hPrintf(" id=\"outBed\"");
-    hPrintf(">%s\n", ot->label);
+    hPrintf(">%s</OPTION>\n", ot->label);
     }
 hPrintf("</SELECT>\n");
 hPrintf(" ");
 
 hPrintf("<DIV style='display:none; opacity:0.9; border: 1px solid #EEE; margin: 2px; padding: 4px' id='gffNote'>"
         "<b>Note:</b> Table Browser GTF files contain transcripts, but no gene identifiers or symbols.<br> "
         "If you are looking for fully formatted "
         "gene model files for use in genome analysis pipelines,<br>check the "
         "<a href='https://hgdownload.soe.ucsc.edu/goldenPath/%s/bigZips/genes'>bigZips/genes</a> "
         "directory on our download server.</DIV>", database);
 hPrintf(" ");
 
 jsInline("function checkGtfNote(event) {\n"
     "if (document.getElementById('outputTypeDropdown').value==='gff')\n"
     "    document.getElementById('gffNote').style.display='';\n"