Javascript 为什么设置变量对我不起作用?

Javascript 为什么设置变量对我不起作用?,javascript,Javascript,当我定义变量code='nl'时,下面的代码段起作用,但是当我从下拉列表中获取此变量(仅注释var code='nl';)时,它不起作用,尽管是警报(代码);给出了完全相同的答案 欢迎任何帮助 function putvariable() { var e = document.getElementById("countrylist"); // select element var strUser = e.options[e.selectedIndex].value; va

当我定义变量code='nl'时,下面的代码段起作用,但是当我从下拉列表中获取此变量(仅注释var code='nl';)时,它不起作用,尽管是警报(代码);给出了完全相同的答案

欢迎任何帮助

function putvariable() {
    var e = document.getElementById("countrylist"); // select element
    var strUser = e.options[e.selectedIndex].value;
    var code = String(strUser);
    var code = 'nl';
    alert(code);
    $.countrycodeuse = code;
    return $.countrycodeuse
}
更新#1

当我取出var code='nl'时,变量'code'在警报框中看起来是一样的;,所以我确实从下拉列表中得到了值。因此,使用alert,我在注释var code='nl'时得到相同的值;但是,当code='nl'时,将使用此变量的函数不起作用;注释(因此使用下拉列表中的变量)

更新#2

整个代码有点多,但可能有帮助:

<html>
<head>

<style type="text/css">
#city {
font-family : Arial; Font-size : 14px; color: black;
width: 220px;}

.ac_results {
    padding: 0px;
    border: 1px solid black;
    background-color: white;
    overflow: hidden;
    z-index: 99999;
}

.ac_results ul {
    width: 100%;
    list-style-position: outside;
    list-style: none;
    padding: 0;
    margin: 0;
}

.ac_results li {
    margin: 0px;
    padding: 2px 5px;
    cursor: default;
    display: block;
    /* 
    if width will be 100% horizontal scrollbar will apear 
    when scroll mode will be used
    */
    /*width: 100%;*/
    font: menu;
    font-size: 12px;
    /* 
    it is very important, if line-height not setted or setted 
    in relative units scroll will be broken in firefox
    */
    line-height: 16px;
    overflow: hidden;
}

.ac_loading {
    background: white url('indicator.gif') right center no-repeat;
}

.ac_odd {
    background-color: #eee;
}

.ac_over {
    background-color: #0A246A;
    color: white;
}
</style>


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
/*
 * Autocomplete - jQuery plugin 1.0.2
 *
 * Copyright (c) 2007 Dylan Verheul, Dan G. Switzer, Anjesh Tuladhar, Jörn Zaefferer
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Revision: $Id: jquery.autocomplete.js 5747 2008-06-25 18:30:55Z joern.zaefferer $
 *
 */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(3($){$.31.1o({12:3(b,d){5 c=Y b=="1w";d=$.1o({},$.D.1L,{11:c?b:14,w:c?14:b,1D:c?$.D.1L.1D:10,Z:d&&!d.1x?10:3U},d);d.1t=d.1t||3(a){6 a};d.1q=d.1q||d.1K;6 I.K(3(){1E $.D(I,d)})},M:3(a){6 I.X("M",a)},1y:3(a){6 I.15("1y",[a])},20:3(){6 I.15("20")},1Y:3(a){6 I.15("1Y",[a])},1X:3(){6 I.15("1X")}});$.D=3(o,r){5 t={2N:38,2I:40,2D:46,2x:9,2v:13,2q:27,2d:3x,2j:33,2o:34,2e:8};5 u=$(o).3f("12","3c").P(r.24);5 p;5 m="";5 n=$.D.2W(r);5 s=0;5 k;5 h={1z:B};5 l=$.D.2Q(r,o,1U,h);5 j;$.1T.2L&&$(o.2K).X("3S.12",3(){4(j){j=B;6 B}});u.X(($.1T.2L?"3Q":"3N")+".12",3(a){k=a.2F;3L(a.2F){Q t.2N:a.1d();4(l.L()){l.2y()}A{W(0,C)}N;Q t.2I:a.1d();4(l.L()){l.2u()}A{W(0,C)}N;Q t.2j:a.1d();4(l.L()){l.2t()}A{W(0,C)}N;Q t.2o:a.1d();4(l.L()){l.2s()}A{W(0,C)}N;Q r.19&&$.1p(r.R)==","&&t.2d:Q t.2x:Q t.2v:4(1U()){a.1d();j=C;6 B}N;Q t.2q:l.U();N;3A:1I(p);p=1H(W,r.1D);N}}).1G(3(){s++}).3v(3(){s=0;4(!h.1z){2k()}}).2i(3(){4(s++>1&&!l.L()){W(0,C)}}).X("1y",3(){5 c=(1n.7>1)?1n[1]:14;3 23(q,a){5 b;4(a&&a.7){16(5 i=0;i<a.7;i++){4(a[i].M.O()==q.O()){b=a[i];N}}}4(Y c=="3")c(b);A u.15("M",b&&[b.w,b.H])}$.K(1g(u.J()),3(i,a){1R(a,23,23)})}).X("20",3(){n.18()}).X("1Y",3(){$.1o(r,1n[1]);4("w"2G 1n[1])n.1f()}).X("1X",3(){l.1u();u.1u();$(o.2K).1u(".12")});3 1U(){5 b=l.26();4(!b)6 B;5 v=b.M;m=v;4(r.19){5 a=1g(u.J());4(a.7>1){v=a.17(0,a.7-1).2Z(r.R)+r.R+v}v+=r.R}u.J(v);1l();u.15("M",[b.w,b.H]);6 C}3 W(b,c){4(k==t.2D){l.U();6}5 a=u.J();4(!c&&a==m)6;m=a;a=1k(a);4(a.7>=r.22){u.P(r.21);4(!r.1C)a=a.O();1R(a,2V,1l)}A{1B();l.U()}};3 1g(b){4(!b){6[""]}5 d=b.1Z(r.R);5 c=[];$.K(d,3(i,a){4($.1p(a))c[i]=$.1p(a)});6 c}3 1k(a){4(!r.19)6 a;5 b=1g(a);6 b[b.7-1]}3 1A(q,a){4(r.1A&&(1k(u.J()).O()==q.O())&&k!=t.2e){u.J(u.J()+a.48(1k(m).7));$.D.1N(o,m.7,m.7+a.7)}};3 2k(){1I(p);p=1H(1l,47)};3 1l(){5 c=l.L();l.U();1I(p);1B();4(r.2U){u.1y(3(a){4(!a){4(r.19){5 b=1g(u.J()).17(0,-1);u.J(b.2Z(r.R)+(b.7?r.R:""))}A u.J("")}})}4(c)$.D.1N(o,o.H.7,o.H.7)};3 2V(q,a){4(a&&a.7&&s){1B();l.2T(a,q);1A(q,a[0].H);l.1W()}A{1l()}};3 1R(f,d,g){4(!r.1C)f=f.O();5 e=n.2S(f);4(e&&e.7){d(f,e)}A 4((Y r.11=="1w")&&(r.11.7>0)){5 c={45:+1E 44()};$.K(r.2R,3(a,b){c[a]=Y b=="3"?b():b});$.43({42:"41",3Z:"12"+o.3Y,2M:r.2M,11:r.11,w:$.1o({q:1k(f),3X:r.Z},c),3W:3(a){5 b=r.1r&&r.1r(a)||1r(a);n.1h(f,b);d(f,b)}})}A{l.2J();g(f)}};3 1r(c){5 d=[];5 b=c.1Z("\\n");16(5 i=0;i<b.7;i++){5 a=$.1p(b[i]);4(a){a=a.1Z("|");d[d.7]={w:a,H:a[0],M:r.1v&&r.1v(a,a[0])||a[0]}}}6 d};3 1B(){u.1e(r.21)}};$.D.1L={24:"3R",2H:"3P",21:"3O",22:1,1D:3M,1C:B,1a:C,1V:B,1j:10,Z:3K,2U:B,2R:{},1S:C,1K:3(a){6 a[0]},1q:14,1A:B,E:0,19:B,R:", ",1t:3(b,a){6 b.2C(1E 3J("(?![^&;]+;)(?!<[^<>]*)("+a.2C(/([\\^\\$\\(\\)\\[\\]\\{\\}\\*\\.\\+\\?\\|\\\\])/2A,"\\\\$1")+")(?![^<>]*>)(?![^&;]+;)","2A"),"<2z>$1</2z>")},1x:C,1s:3I};$.D.2W=3(g){5 h={};5 j=0;3 1a(s,a){4(!g.1C)s=s.O();5 i=s.3H(a);4(i==-1)6 B;6 i==0||g.1V};3 1h(q,a){4(j>g.1j){18()}4(!h[q]){j++}h[q]=a}3 1f(){4(!g.w)6 B;5 f={},2w=0;4(!g.11)g.1j=1;f[""]=[];16(5 i=0,30=g.w.7;i<30;i++){5 c=g.w[i];c=(Y c=="1w")?[c]:c;5 d=g.1q(c,i+1,g.w.7);4(d===B)1P;5 e=d.3G(0).O();4(!f[e])f[e]=[];5 b={H:d,w:c,M:g.1v&&g.1v(c)||d};f[e].1O(b);4(2w++<g.Z){f[""].1O(b)}};$.K(f,3(i,a){g.1j++;1h(i,a)})}1H(1f,25);3 18(){h={};j=0}6{18:18,1h:1h,1f:1f,2S:3(q){4(!g.1j||!j)6 14;4(!g.11&&g.1V){5 a=[];16(5 k 2G h){4(k.7>0){5 c=h[k];$.K(c,3(i,x){4(1a(x.H,q)){a.1O(x)}})}}6 a}A 4(h[q]){6 h[q]}A 4(g.1a){16(5 i=q.7-1;i>=g.22;i--){5 c=h[q.3F(0,i)];4(c){5 a=[];$.K(c,3(i,x){4(1a(x.H,q)){a[a.7]=x}});6 a}}}6 14}}};$.D.2Q=3(e,g,f,k){5 h={G:"3E"};5 j,y=-1,w,1m="",1M=C,F,z;3 2r(){4(!1M)6;F=$("<3D/>").U().P(e.2H).T("3C","3B").1J(2p.2n);z=$("<3z/>").1J(F).3y(3(a){4(V(a).2m&&V(a).2m.3w()==\'2l\'){y=$("1F",z).1e(h.G).3u(V(a));$(V(a)).P(h.G)}}).2i(3(a){$(V(a)).P(h.G);f();g.1G();6 B}).3t(3(){k.1z=C}).3s(3(){k.1z=B});4(e.E>0)F.T("E",e.E);1M=B}3 V(a){5 b=a.V;3r(b&&b.3q!="2l")b=b.3p;4(!b)6[];6 b}3 S(b){j.17(y,y+1).1e(h.G);2h(b);5 a=j.17(y,y+1).P(h.G);4(e.1x){5 c=0;j.17(0,y).K(3(){c+=I.1i});4((c+a[0].1i-z.1c())>z[0].3o){z.1c(c+a[0].1i-z.3n())}A 4(c<z.1c()){z.1c(c)}}};3 2h(a){y+=a;4(y<0){y=j.1b()-1}A 4(y>=j.1b()){y=0}}3 2g(a){6 e.Z&&e.Z<a?e.Z:a}3 2f(){z.2B();5 b=2g(w.7);16(5 i=0;i<b;i++){4(!w[i])1P;5 a=e.1K(w[i].w,i+1,b,w[i].H,1m);4(a===B)1P;5 c=$("<1F/>").3m(e.1t(a,1m)).P(i%2==0?"3l":"3k").1J(z)[0];$.w(c,"2c",w[i])}j=z.3j("1F");4(e.1S){j.17(0,1).P(h.G);y=0}4($.31.2b)z.2b()}6{2T:3(d,q){2r();w=d;1m=q;2f()},2u:3(){S(1)},2y:3(){S(-1)},2t:3(){4(y!=0&&y-8<0){S(-y)}A{S(-8)}},2s:3(){4(y!=j.1b()-1&&y+8>j.1b()){S(j.1b()-1-y)}A{S(8)}},U:3(){F&&F.U();j&&j.1e(h.G);y=-1},L:3(){6 F&&F.3i(":L")},3h:3(){6 I.L()&&(j.2a("."+h.G)[0]||e.1S&&j[0])},1W:3(){5 a=$(g).3g();F.T({E:Y e.E=="1w"||e.E>0?e.E:$(g).E(),2E:a.2E+g.1i,1Q:a.1Q}).1W();4(e.1x){z.1c(0);z.T({29:e.1s,3e:\'3d\'});4($.1T.3b&&Y 2p.2n.3T.29==="3a"){5 c=0;j.K(3(){c+=I.1i});5 b=c>e.1s;z.T(\'3V\',b?e.1s:c);4(!b){j.E(z.E()-28(j.T("32-1Q"))-28(j.T("32-39")))}}}},26:3(){5 a=j&&j.2a("."+h.G).1e(h.G);6 a&&a.7&&$.w(a[0],"2c")},2J:3(){z&&z.2B()},1u:3(){F&&F.37()}}};$.D.1N=3(b,a,c){4(b.2O){5 d=b.2O();d.36(C);d.35("2P",a);d.4c("2P",c);d.4b()}A 4(b.2Y){b.2Y(a,c)}A{4(b.2X){b.2X=a;b.4a=c}}b.1G()}})(49);',62,261,'|||function|if|var|return|length|||||||||||||||||||||||||data||active|list|else|false|true|Autocompleter|width|element|ACTIVE|value|this|val|each|visible|result|break|toLowerCase|addClass|case|multipleSeparator|moveSelect|css|hide|target|onChange|bind|typeof|max||url|autocomplete||null|trigger|for|slice|flush|multiple|matchSubset|size|scrollTop|preventDefault|removeClass|populate|trimWords|add|offsetHeight|cacheLength|lastWord|hideResultsNow|term|arguments|extend|trim|formatMatch|parse|scrollHeight|highlight|unbind|formatResult|string|scroll|search|mouseDownOnSelect|autoFill|stopLoading|matchCase|delay|new|li|focus|setTimeout|clearTimeout|appendTo|formatItem|defaults|needsInit|Selection|push|continue|left|request|selectFirst|browser|selectCurrent|matchContains|show|unautocomplete|setOptions|split|flushCache|loadingClass|minChars|findValueCallback|inputClass||selected||parseInt|maxHeight|filter|bgiframe|ac_data|COMMA|BACKSPACE|fillList|limitNumberOfItems|movePosition|click|PAGEUP|hideResults|LI|nodeName|body|PAGEDOWN|document|ESC|init|pageDown|pageUp|next|RETURN|nullData|TAB|prev|strong|gi|empty|replace|DEL|top|keyCode|in|resultsClass|DOWN|emptyList|form|opera|dataType|UP|createTextRange|character|Select|extraParams|load|display|mustMatch|receiveData|Cache|selectionStart|setSelectionRange|join|ol|fn|padding|||moveStart|collapse|remove||right|undefined|msie|off|auto|overflow|attr|offset|current|is|find|ac_odd|ac_even|html|innerHeight|clientHeight|parentNode|tagName|while|mouseup|mousedown|index|blur|toUpperCase|188|mouseover|ul|default|absolute|position|div|ac_over|substr|charAt|indexOf|180|RegExp|100|switch|400|keydown|ac_loading|ac_results|keypress|ac_input|submit|style|150|height|success|limit|name|port||abort|mode|ajax|Date|timestamp||200|substring|jQuery|selectionEnd|select|moveEnd'.split('|'),0,{}))



$(document).ready(function() {
$("#countrylist").change(function() {

var e = document.getElementById("countrylist"); // select element
var strUser = e.options[e.selectedIndex].value; 

countrycodeuse=strUser;
countrycodedefine=strUser;
alert(countrycodeuse);

return countrycodeuse;

});
});



$(document).ready(function() {
$.countrycodeuse='nl';
$.countrycodeuse=putvariable();
//

$("#city").autocomplete("http://ws.geonames.org/searchJSON", {
        dataType: 'jsonp',
        parse: function(data) {
            var rows = new Array();
            data = data.geonames;
            for(var i=0; i<data.length; i++){
                rows[i] = { data:data[i], value:data[i].name, result:data[i].name };
            }
            return rows;
        },
        formatItem: function(row, i, n) {
            return row.name + ', ' + row.countryName;
        },

        extraParams: {

// geonames doesn't support q and limit, which are the autocomplete plugin defaults, so let's blank them out.

            q: '',
            limit: '',
            country: $.countrycodeuse,
            featureClass: '*',
            style: 'full',
            maxRows: 50,
            name_startsWith: function () { return $("#city").val() }
        },
        max: 50
    }); 

  });

function showvariable(){
var e = document.getElementById("countrylist"); // select element
var strUser = e.options[e.selectedIndex].value; 
code = e.value;
alert($.countrycodeuse);}

function putvariable(){
var e = document.getElementById("countrylist"); // select element
var strUser = e.options[e.selectedIndex].value; 
var code = e.value;
var code = String(strUser);
var code='nl';
alert(typeof(strUser));
$.countrycodeuse=code;
return $.countrycodeuse}


</script>

</head>
<body>

<select id = "countrylist" name="countrydep" size="1"><option value="0">Select Country:</option><option value="al">Albania</option><option value="ad">Andorra</option><option value="at">Austria</option><option value="by">Belarus</option><option value="be">Belgium</option><option value="ba">Bosnia and Herzegovina</option><option value="bg">Bulgaria</option><option value="hr">Croatia</option><option value="cz">Czech Republic</option><option value="dk">Denmark</option><option value="eg">Egypt</option><option value="ee">Estonia</option><option value="fo">Faroe Islands</option><option value="fi">Finland</option><option value="fr">France</option><option value="de">Germany</option><option value="gi">Gibraltar</option><option value="gr">Greece</option><option value="hu">Hungary</option><option value="is">Iceland</option><option value="ie">Ireland</option><option value="il">Israel</option><option value="it">Italy</option><option value="li">Liechtenstein</option><option value="lt">Lithuania</option><option value="lu">Luxembourg</option><option value="lv">Latvia</option><option value="mk">Macedonia</option><option value="mt">Malta</option><option value="md">Moldova, Republic of</option><option value="mc">Monaco</option><option value="ma">Morocco</option><option value="nl">Netherlands</option><option value="no">Norway</option><option value="pl">Poland</option><option value="pt">Portugal</option><option value="ro">Romania</option><option value="ro">Russia</option><option value="sm">San Marino</option><option value="cs">Serbia and Montenegro</option><option value="sk">Slovakia</option><option value="si">Slovenia</option><option value="es">Spain</option><option value="se">Sweden</option><option value="ch">Switzerland</option><option value="tr">Turkey</option><option value="ua">Ukraine</option><option value="gb">United Kingdom</option><option value="va">Vatican City State</option></select>
Autocomplete:
<form name="test" action="">
        <input id="city" name="city"> 
</form>
<p>
<a href = "#" onclick ="showvariable()">showvariable here</a>
<a href = "#" onclick ="putvariable()">putvariable here</a>
</body>
</html>

#城市{
字体系列:Arial;字体大小:14px;颜色:黑色;
宽度:220px;}
.ac_结果{
填充:0px;
边框:1px纯黑;
背景色:白色;
溢出:隐藏;
z指数:99999;
}
.ac_结果ul{
宽度:100%;
列表样式位置:外部;
列表样式:无;
填充:0;
保证金:0;
}
.ac_结果李{
边际:0px;
填充物:2px 5px;
游标:默认值;
显示:块;
/* 
如果宽度为100%,则水平滚动条将显示
何时使用滚动模式
*/
/*宽度:100%*/
字体:菜单;
字体大小:12px;
/* 
如果线条高度未设置或未设置,这一点非常重要
在相对单位中,firefox中的滚动将被打断
*/
线高:16px;
溢出:隐藏;
}
.空调负荷{
背景:白色url('indicator.gif')右中心不重复;
}
A.奇数{
背景色:#eee;
}
A.请稍等{
背景色:#0A246A;
颜色:白色;
}
/*
*自动完成-jQuery插件1.0.2
*
*版权所有(c)2007迪伦·维赫尔,丹·G·斯威策,安杰什·图拉达尔,JÃúrn Zaeferer
*
*MIT和GPL许可下的双重许可:
*   http://www.opensource.org/licenses/mit-license.php
*   http://www.gnu.org/licenses/gpl.html
*
*修订版:$Id:jquery.autocomplete.js 5747 2008-06-25 18:30:55Z joern.zaeffer$
*
*/
eval(函数(p,a,c,k,e,r){e=函数(c){return(c

只需确保
e.options[e.selectedIndex].value;
正在返回任何值,如果未返回null,则可能会给您带来错误


或者检查是否存在execption或是否将代码放入
块。

只需确保
e.options[e.selectedIndex].value;
是否返回任何值,如果不返回null,则可能会给您一个错误

或者要检查是否存在execption或是否将代码放入
块,请尝试{}catch{}
块。

您留下了这一行:

var code = 'nl';
因此,此分配将覆盖上一行。删除它,它将按预期工作

作为旁注,您确实应该为一组定义使用单个
var
语句,并用逗号分隔每个变量声明/赋值。此外,您不需要对已经是字符串的值使用
String()

您的最终代码应该如下所示:

function putvariable() {
    var e = document.getElementById("countrylist"), // select element
        strUser = e.options[e.selectedIndex].value,
        code = strUser;

    alert(code);
    $.countrycodeuse = code;
    return $.countrycodeuse
}
您将此行留在:

var code = 'nl';
因此,此分配将覆盖上一行。删除它,它将按预期工作

作为旁注,您确实应该为一组定义使用单个
var
语句,并用逗号分隔每个变量声明/赋值。此外,您不需要对已经是字符串的值使用
String()

您的最终代码应该如下所示:

function putvariable() {
    var e = document.getElementById("countrylist"), // select element
        strUser = e.options[e.selectedIndex].value,
        code = strUser;

    alert(code);
    $.countrycodeuse = code;
    return $.countrycodeuse
}

String(strUser)将创建一个对象。当发出警报时,它将显示为字符串中的保存值。但是,我猜您的从属函数需要一个字符串,但您正在将对象缓存在$.countrycodeuse中。请自己尝试,执行类型检查,而不是警报值。

String(strUser)将创建一个对象。当发出警报时,它将显示为字符串中的保存值。但是,我猜您的从属函数需要一个字符串,但您正在将一个对象缓存在$.countrycodeuse中。请自己尝试,进行类型检查,而不是警报值。

您是否尝试过修剪strUser?出现一些错误?或者您得到了什么当您提醒下拉值时?如果您提醒'strUser'或strUser.toString();?strUser的值是多少?为什么要这样做?字符串(strUser)strUser不是字符串??您是否尝试过修剪strUser?出现了一些错误?或者在警告下拉值时得到了什么?如果警告'strUser'或strUser.toString();?strUser的值是多少?为什么要这样做?字符串(strUser)strUser不是一个字符串??我想我对我的问题不是很清楚,我做了一个更新。问题是我确实以两种不同的方式获取了值代码。但是当我从下拉列表中获取值时,该值不知何故无法用于另一个函数(jquery)。发出警报时,值看起来完全相同。@BastiaanWesteinde try
alert(strUser)
。使用
字符串(strUser)可能有问题
@Raynos当我在下拉菜单中选择荷兰时,它会在警报中给出nl。因此,它给出的答案与我定义变量时的答案完全相同。我认为可能在格式上有所不同。因为我确实从下拉菜单中获得了变量,而且当我手动放置时,它正在工作……我想我对我的任务不是很清楚ion,我做了一个更新。问题是我确实以两种不同的方式获取了值代码。但当我从下拉列表中获取值时,该值不知何故无法用于另一个函数(jquery)。发出警报时,值看起来完全相同。@BastiaanWesteinde try
alert(strUser)
。使用
String(strUser)可能有问题
@Raynos当我在de下拉列表中选择荷兰时,它会在警报中给出nl。因此,它给出的答案与我定义变量时的答案完全相同。我认为格式可能有所不同。因为