我開始懷疑,jquery易於使用和靈活。 我有這樣的:jQuery的全局變量可用無處不在
var prodata=[];
var request = $.get("proDB.txt", function(data) {
var lines=data.split(/\n/);
var numberofmodels=lines.length-2;
//var prodata=[];
var i;
prodata.push(0);
var fieldnames=lines[0].split(/\t/);
for (i = 1; i < lines.length-1; ++i) {
var fields=lines[i].split(/\t/);
prodata.push(i);
var j;
prodata[i]={};
for (j = 0; j < fields.length; ++j) {
//prodata[i][fieldnames[j]]=fields[j];
var str=fieldnames[j];
prodata[i][str]=fields[j];
}
}
//FILL THE DROPDOWN LIST
var options = '';
for (i = 1; i < lines.length-1; ++i) {
if (prodata[i]['name'].indexOf("elly") >= 0) {
var iselected = i;
}
options += '<option label="bla" value="' + prodata[i]['id'] + '">' + prodata[i]['name']+', '+prodata[i]['brand']+', '+prodata[i]['model']+'</option>';
}
$("#userchosenpromodel").html(options);
//SELECT DEFAULT OPTION
$('#userchosenpromodel option[value="' + prodata[iselected]['id'] + '"]').attr("selected", "selected");
}, 'text'); //$.get
我想在我的代碼使用proId
,下,它被定義一樣,後:
//SUBMIT FORM
$('#submitbutton').click(function(e) {
e.preventDefault();
request.done(function(){
proId=$('#userchosenpromodel option[selected="selected"]').val();
proId=parseInt(proId);
computeUserDimensions(prodata[proId]);
});
});
console.log(proId);
如何?
爲prodata
同樣的問題...我有request.done
,我無法擺脫的
感謝
嗯..簡單的時間問題。 'console.log'在'request.done'之前運行,所以它會在更改之前記錄該值。 – Leeish 2013-04-05 15:01:02
你不能。我很抱歉以同樣的方式繼續回答,但是......你不能。 Ajax是異步的。如果你想以這種方式編寫代碼,你必須使它同步並處理帶來的副作用。否則,重新組織您的代碼,以便在完成的回調之外不需要proId。 – 2013-04-05 15:01:06
你是對的...我不習慣這種類型的algorythmic – Louis 2013-04-05 15:30:30