如何向 JavaScript 创建的下拉菜单添加选项

How to add an option to a dropdown menu created by JavaScript

本文关键字:下拉菜单 添加 选项 创建 JavaScript      更新时间:2023-09-26

嗨,我今年15岁,刚刚开始学习HTML CSS和JavaScript。

我正在尝试编辑一个下拉菜单,用于在结帐页面上列出所有 50 个州,默认情况下,当页面加载时它是空白的,我希望它说"州"。我正在尝试再做一个选项,该选项显示"状态",其属性为"已选择"和"禁用"。我不知道如何做到这一点,因为它都是JavaScript,我在网上看了一下,什么也没找到。

所以我需要一些关于如何做到这一点的帮助,我不知道如何在 JavaScript 中做到这一点

我没有写任何这段代码,我不知道其中大部分甚至做了什么,这就是为什么我给了你整个文档,我只是想编辑它。

这是我尝试编辑的JavaScript/PHP。

// If you have PHP you can set the post values like this
//var postState = '<?= $_POST["state"] ?>';
//var postCountry = '<?= $_POST["country"] ?>';
var postState = 'US';
var postCountry = 'FL';
// State table
//
// To edit the list, just delete a line or add a line. Order is important.
// The order displayed here is the order it appears on the drop down.
//
var stateList = ''
US:AL:Alabama|'
US:AK:Alaska|'
CA:AB:Alberta|'
US:AZ:Arizona|'
US:AR:Arkansas|'
CA:BC:British Columbia|'
US:CA:California|'
US:CO:Colorado|'
US:CT:Connecticut|'
US:DE:Delaware|'
US:DC:District of Columbia|'
US:FL:Florida|'
US:GA:Georgia|'
US:HI:Hawaii|'
US:ID:Idaho|'
US:IL:Illinois|'
US:IN:Indiana|'
US:IA:Iowa|'
US:KS:Kansas|'
US:KY:Kentucky|'
US:LA:Louisiana|'
US:ME:Maine|'
CA:MB:Manitoba|'
US:MD:Maryland|'
US:MA:Massachusetts|'
US:MI:Michigan|'
US:MN:Minnesota|'
US:MS:Mississippi|'
US:MO:Missouri|'
US:MT:Montana|'
US:NE:Nebraska|'
US:NV:Nevada|'
CA:NB:New Brunswick|'
US:NH:New Hampshire|'
US:NJ:New Jersey|'
US:NM:New Mexico|'
US:NY:New York|'
CA:NL:Newfoundland and Labrador|'
US:NC:North Carolina|'
US:ND:North Dakota|'
CA:NT:Northwest Territories|'
CA:NS:Nova Scotia|'
CA:NU:Nunavut|'
US:OH:Ohio|'
US:OK:Oklahoma|'
CA:ON:Ontario|'
US:OR:Oregon|'
US:PA:Pennsylvania|'
CA:PE:Prince Edward Island|'
US:PR:Puerto Rico|'
CA:QC:Quebec|'
US:RI:Rhode Island|'
CA:SK:Saskatchewan|'
US:SC:South Carolina|'
US:SD:South Dakota|'
US:TN:Tennessee|'
US:TX:Texas|'
US:UT:Utah|'
US:VT:Vermont|'
US:VI:Virgin Islands|'
US:VA:Virginia|'
US:WA:Washington|'
US:WV:West Virginia|'
US:WI:Wisconsin|'
US:WY:Wyoming|'
CA:YT:Yukon Territory|'
';
// Country data table
//
// To edit the list, just delete a line or add a line. Order is important.
// The order displayed here is the order it appears on the drop down.
//
var country = ''
AF:Afghanistan|'
AX:Aland Islands|'
AL:Albania|'
DZ:Algeria|'
AS:American Samoa|'
AD:Andorra|'
AO:Angola|'
AI:Anguilla|'
AQ:Antarctica|'
AG:Antigua & Barbuda|'
AR:Argentina|'
AM:Armenia|'
AW:Aruba|'
AU:Australia|'
AT:Austria|'
AZ:Azerbaijan|'
AP:Azores|'
BS:Bahamas|'
BH:Bahrain|'
BD:Bangladesh|'
BB:Barbados|'
BY:Belarus|'
BE:Belgium|'
BZ:Belize|'
BJ:Benin|'
BM:Bermuda|'
BT:Bhutan|'
BO:Bolivia|'
BL:Bonaire|'
BA:Bosnia|'
BW:Botswana|'
BV:Bouvet Island|'
BR:Brazil|'
VG:British Virgin Islands|'
BN:Brunei|'
BG:Bulgaria|'
BF:Burkina Faso|'
BI:Burundi|'
KH:Cambodia|'
CM:Cameroon|'
CA:Canada|'
IC:Canary Islands|'
CV:Cape Verde Islands|'
KY:Cayman Islands|'
CF:Central African Republic|'
TD:Chad|'
CD:Channel Islands|'
CL:Chile|'
CN:China|'
CX:Christmas Island|'
CC:Cocos (keeling) Islands|'
CO:Colombia|'
CG:Congo|'
CK:Cook Islands|'
CR:Costa Rica|'
CI:Cote Divoire|'
HR:Croatia|'
CB:Curacao|'
CY:Cyprus|'
CZ:Czech Republic|'
DK:Denmark|'
DJ:Djibouti|'
DM:Dominica|'
DO:Dominican Republic|'
EC:Ecuador|'
EG:Egypt|'
SV:El Salvador|'
EN:England|'
GQ:Equitorial Guinea|'
ER:Eritrea|'
EE:Estonia|'
ET:Ethiopia|'
FO:Faeroe Islands|'
FK:Falkland Islands (Malvinas)|'
FJ:Fiji|'
FI:Finland|'
FR:France|'
GF:French Guiana|'
PF:French Polynesia|'
TF:French Southern Territories|'
GA:Gabon|'
GM:Gambia|'
GE:Georgia|'
DE:Germany|'
GH:Ghana|'
GI:Gibraltar|'
GR:Greece|'
GL:Greenland|'
GD:Grenada|'
GP:Guadeloupe|'
GU:Guam|'
GT:Guatemala|'
GG:Guernsey|'
GN:Guinea|'
GW:Guinea-Bissau|'
GY:Guyana|'
HT:Haiti|'
HM:Heard Island and Mcdonald Islands|'
HO:Holland|'
VA:Holy See (Vatican City State)|'
HN:Honduras|'
HK:Hong Kong|'
HU:Hungary|'
IS:Iceland|'
IN:India|'
ID:Indonesia|'
IR:Iran|'
IQ:Iraq|'
IE:Ireland|'
IM:Isle of Man|'
IL:Israel|'
IT:Italy|'
JM:Jamaica|'
JP:Japan|'
JE:Jersey|'
JO:Jordan|'
KZ:Kazakhstan|'
KE:Kenya|'
KI:Kiribati|'
KP:Korea, Democratic People''s Republic of|'
KR:Korea, Republic of|'
KO:Kosrae|'
KW:Kuwait|'
KG:Kyrgyzstan|'
LA:Laos|'
LV:Latvia|'
LB:Lebanon|'
LS:Lesotho|'
LR:Liberia|'
LY:Libyan Arab Jamahiriya|'
LI:Liechtenstein|'
LT:Lithuania|'
LU:Luxembourg|'
MO:Macau|'
MK:Macedonia, Republic of|'
MG:Madagascar|'
MW:Malawi|'
MY:Malaysia|'
MV:Maldives|'
ML:Mali|'
MT:Malta|'
MH:Marshall Islands|'
MQ:Martinique|'
MR:Mauritania|'
MU:Mauritius|'
YT:Mayotte|'
MX:Mexico|'
FM:Micronesia, Federated States of|'
MD:Moldova|'
MC:Monaco|'
MN:Mongolia|'
ME:Montenegro, Republic of|'
MS:Montserrat|'
MA:Morocco|'
MZ:Mozambique|'
MM:Myanmar|'
NA:Namibia|'
NR:Nauru|'
NP:Nepal|'
NL:Netherlands|'
AN:Netherlands Antilles|'
NC:New Caledonia|'
NZ:New Zealand|'
NI:Nicaragua|'
NE:Niger|'
NG:Nigeria|'
NU:Niue|'
NF:Norfolk Island|'
NB:Northern Ireland|'
MP:Northern Mariana Islands|'
NO:Norway|'
OM:Oman|'
PK:Pakistan|'
PW:Palau|'
PS:Palestinian Territory, Occupied|'
PA:Panama|'
PG:Papua New Guinea|'
PY:Paraguay|'
PE:Peru|'
PH:Philippines|'
PN:Pitcairn Island|'
PL:Poland|'
PO:Ponape|'
PT:Portugal|'
PR:Puerto Rico|'
QA:Qatar|'
RE:Reunion|'
RO:Romania|'
RT:Rota|'
RU:Russia|'
RW:Rwanda|'
SS:Saba|'
SP:Saipan|'
SM:San Marino|'
ST:Sao Tome and Principe|'
SA:Saudi Arabia|'
SF:Scotland|'
SN:Senegal|'
RS:Serbia, Republic of|'
SC:Seychelles|'
SL:Sierra Leone|'
SG:Singapore|'
SK:Slovakia|'
SI:Slovenia|'
SB:Solomon Islands|'
SO:Somalia|'
ZA:South Africa|'
ES:Spain|'
LK:Sri Lanka|'
NT:St. Barthelemy|'
SW:St. Christopher|'
SX:St. Croix|'
EU:St. Eustatius|'
UV:St. John|'
KN:St. Kitts &amp; Nevis|'
LC:St. Lucia|'
MB:St. Maarten|'
TB:St. Martin|'
VL:St. Thomas|'
VC:St. Vincent & the Grenadines|'
SD:Sudan|'
SR:Suriname|'
SZ:Swaziland|'
SE:Sweden|'
CH:Switzerland|'
SY:Syrian Arab Republic|'
TA:Tahiti|'
TW:Taiwan|'
TJ:Tajikistan|'
TZ:Tanzania|'
TH:Thailand|'
TL:Timor-Leste|'
TI:Tinian|'
TG:Togo|'
TO:Tonga|'
TT:Trinidad and Tobago|'
TU:Truk|'
TN:Tunisia|'
TR:Turkey|'
TM:Turkmenistan|'
TC:Turks & Caicos Islands|'
TV:Tuvalu|'
UG:Uganda|'
UA:Ukraine|'
UI:Union Island|'
AE:United Arab Emirates|'
GB:United Kingdom|'
US:United States|'
UY:Uruguay|'
VI:US Virgin Islands|'
UZ:Uzbekistan|'
VU:Vanuatu|'
VE:Venezuela|'
VN:Vietnam|'
VR:Virgin Gorda|'
WK:Wake Island|'
WL:Wales|'
WF:Wallis and Futuna|'
EH:Western Sahara|'
WS:Western Samoa|'
YA:Yap|'
YE:Yemen|'
ZR:Zaire|'
ZM:Zambia|'
ZW:Zimbabwe|'
';
country = country.substring(0, country.length-1) // Deleting the last "|" character
function get_Element(i)
{
    return document.getElementById(i) || document.getElementsByName(i).item(0);
}
function TrimString(sInString) {
  if ( sInString ) {
    sInString = sInString.replace( /^'s+/g, "" );// strip leading
    return sInString.replace( /'s+$/g, "" );// strip trailing
  }
}
// Populates the country selected with the counties from the country list
function populateCountry(defaultCountry,countryfieldname) {
  if (defaultCountry=="") {defaultCountry="US"}
  var countryLineArray = country.split('|');  // Split into lines
  var selObj = get_Element(countryfieldname);
  if (!selObj) return;
  selObj.options[0] = new Option('','');
  selObj.selectedIndex = 0;

    for (var loop = 0; loop < countryLineArray.length; loop++) {
        lineArray = countryLineArray[loop].split(':');
        countryCode  = TrimString(lineArray[0]);
        countryName  = TrimString(lineArray[1]);
        if ( countryCode != '' ) { selObj.options[loop] = new Option(countryName, countryCode); }       
        if ( defaultCountry == countryCode ) { selObj.selectedIndex = loop; }
    }
}

function populateState(statefieldname,countryfieldname,state1,optionalCreateTextField) {
    //optionalCreateTextField = optional parameter, true/false. When a country doesn't have state, it'll determine if the code creates a text field for the state or just let the dropdown empty.
    var isOpera = false, isIE = false;  
    var strClassName;
    var originalTabIndex;
    if(typeof(window.opera) != 'undefined')
        {isOpera = true;}  
    if(!isOpera && (navigator.userAgent.indexOf('Internet Explorer') > 0 || navigator.userAgent.indexOf('MSIE') > 0) && navigator.userAgent.indexOf('MSIE 9') < 0 && navigator.userAgent.indexOf('MSIE 10') < 0)
        {isIE = true;}
    if (state1==undefined) {state1='';}
    postCountry=get_Element(countryfieldname);
    if (!postCountry) return;
    postCountry=postCountry.value;
    var selObj = get_Element(statefieldname);
    if (!selObj) return;
    var foundState = false;
    originalTabIndex = selObj.getAttribute("tabindex");
    // Empty options just in case new drop down is shorter
    if ( selObj.type == 'select-one' ) {
      selObj.options.length = 0;
     // selObj.options[0] = new Option('Select State','');
     // selObj.selectedIndex = 0;
   }
   // Populate the drop down with states from the selected country
   //
   var stateLineArray   = stateList.split("|");        // Split into lines
   var optionCntr = 0;
   for (var loop = 0; loop < stateLineArray.length; loop++) {
      lineArray = stateLineArray[loop].split(":");
      countryCode  = TrimString(lineArray[0]);
      stateCode    = TrimString(lineArray[1]);
      stateName    = TrimString(lineArray[2]);
      if ( get_Element(countryfieldname).value == countryCode && countryCode != '' ) {
         // If it's a input element, change it to a select
         //
         if ( selObj.type == 'text' ) {
            strClassName = selObj.className;
            parentObj = get_Element(statefieldname).parentNode;
            // Create the Input Field
            if(!isIE){    
                var inputSel = document.createElement("SELECT");
                inputSel.setAttribute("name", statefieldname);
                if (strClassName != 'undefined' && strClassName != '')
                    inputSel.setAttribute("class",strClassName);
                else
                    inputSel.setAttribute("class","txtBoxStyle");
                inputSel.setAttribute("id", statefieldname); 
            } 
            else 
            {    
                var inputSel = document.createElement("<select name="+statefieldname+" id="+statefieldname+">");
                if (strClassName != 'undefined' && strClassName != '')
                    inputSel.setAttribute("className",strClassName);
                else
                    inputSel.setAttribute("className","txtBoxStyle");                   
            }
            inputSel.setAttribute("tabindex", originalTabIndex); 
            parentObj.insertBefore(inputSel, selObj.nextSibling);
            parentObj.removeChild(selObj);
            selObj = get_Element(statefieldname);
         }
         if (optionCntr==0)
         {
            selObj.options[optionCntr] = new Option('','');
            selObj.selectedIndex = optionCntr;
            optionCntr++;
        }
         if ( stateCode != '' ) {
            selObj.options[optionCntr] = new Option(stateName, stateCode);
         }
         // See if it's selected from a previous post
         //
         if ( stateCode == state1 && countryCode == postCountry ) {
            selObj.selectedIndex = optionCntr;
         }
         foundState = true;
         optionCntr++
      }
   }
   // If the country has no states, change the select to a text box
   //
   if ( ! foundState ) {
        if (postCountry == 'ALL')
        {
            //var selObj = get_Element(statefieldname);
            selObj.options.length = 0;
            selObj.options[0] = new Option('ALL','ALL');
            selObj.selectedIndex = 0;
        }
        else
        {
            if (optionalCreateTextField == undefined)
                var createText = true;
            else
                var createText = optionalCreateTextField;
            if (createText)
            {
                strClassName = selObj.className;
                parentObj = get_Element(statefieldname).parentNode;
                // Create the Input Field
                if(!isIE){
                    var inputEl = document.createElement("input");
                    inputEl.setAttribute("name", statefieldname);
                    if (strClassName != 'undefined' && strClassName != '')
                        inputEl.setAttribute("class",strClassName);
                    else
                        inputEl.setAttribute("class","txtBoxStyle");
                    inputEl.setAttribute("id", statefieldname); 
                } 
                else 
                {    
                    var inputEl = document.createElement("<input name='""+statefieldname+"'" id='""+statefieldname+"'" />");
                    if (strClassName != 'undefined' && strClassName != '')
                        inputEl.setAttribute("className",strClassName);
                    else
                        inputEl.setAttribute("className","txtBoxStyle");                    
                }  
                inputEl.setAttribute("tabindex", originalTabIndex); 
                inputEl.setAttribute("type", "text"); 
                inputEl.setAttribute("size", 20); 
                inputEl.setAttribute("value", state1); 
                parentObj.insertBefore(inputEl, selObj.nextSibling);
                parentObj.removeChild(selObj);
            }
        }
   }
}
function insertCountry(strCountryName,countryfieldname) {
    var selObj = get_Element(countryfieldname);
    if (!selObj) return;
    selObj.options[selObj.options.length] = new Option('ALL','ALL');
    selObj.selectedIndex = selObj.options.length-1;
}   
function initCountry(country,state1,statefieldname,countryfieldname) {
  populateCountry(country,countryfieldname);
  populateState(statefieldname,countryfieldname,state1);
}

function GetValue(formx,name1) {
//alert(name1);
var i;
    for(i=0;i<formx.elements.length;i++) {
      if(formx.elements[i].name==name1) {
        return formx.elements[i].value;
      }
    } 
  }

这是 HTML

<div class="chkField">
<label for="billing_state">[CustomerInfo_state]</label>
<select id="billing_state" onchange="this.form.billing_zip.value='';check_address('billing');" name="billing_state" tabindex="9" class="txtBoxStyle">
</select>
我不知道如何

很好地编辑JavaScript,但它似乎正在网页上创建HTML选项,我不知道如何创建另一个显示"状态"的选项,任何帮助将不胜感激。

谢谢

安德鲁

尝试使用 jquery 的 append(( 函数就像你的 HTML 是这样的

<html>
  <select id="temp"></select>
</html>

$("#temp").append("<option>Your Value</option>")