所以,我遇到了一个问题,而对于我的生活,我似乎无法解决它。这看起来非常基本,但我无法理解为什么这段代码无法正常工作。
我的问题是,我正在为一个数组分配一个键值对,但是没有赋值。这是一个可变范围问题吗?
这是我的代码
<Border x:Name="SwipeTarget">
<i:Interaction.Behaviors>
<local:SwipeEventBehavior Direction="Left">
<cm:ActionMessage AssociatedObject="{Binding ElementName=SwipeTarget" Method="LeftSwipe" />
</local:SwipeEventBehavior>
</i:Interaction.Behaviors>
</Border>
答案 0 :(得分:0)
temp.length
大于0,则应填充 undefined
。您的返回值始终为mycookies[cookiename]
;永远不会为console.log(mycookies)
分配值。
尝试在返回语句之前添加AVSpeechSynthesizer
。
答案 1 :(得分:0)
Mycookies
应该是Object
,而不是Array
。
var mycookies = {};
答案 2 :(得分:0)
修剪你的密钥,因为cookie字符串看起来像这样:
&#34; __ UTMA = 250730393.1032915092.1427933260.1430325220.1430325220.1; __utmc = 250730393; __utmz = 250730393.1430325220.1.1.utmcsr =(直接)| utmccn =(直接)| utmcmd =(无);点击次数= 22; _gat = 1; _ga = GA1.2.1032915092.1427933260&#34;
因此,当您在;
上拆分时,在某些关键名称之前会有一个额外的空格。
function getcookie(cookiename){
var mycookies = []; // The cookie jar
var temp = document.cookie.split(";");
var key = "";
var val = "";
for(i=0;i<temp.length;i++){
key = temp[i].split("=")[0].trim(); // added trim here
val = temp[i].split("=")[1];
mycookies[key] = val;
}
return mycookies[cookiename];
}
演示:JSBin
答案 3 :(得分:0)
我的朋友,你有点困惑(也许你已用PHP编程),因为在JavaScript中,class SetDate {
var seconds = Int()
var minutes = Int()
var hours = Int()
var days = Int()
var weeks = Int()
var months = Int()
var years = Int()
func setLabels(seconds,minute,hous,weeks,days,months,years) {
self.SLabel.text = String(seconds)
self.MLabel.text = String(minute)
self.HLabel.text = String(hous)
self.WLabel.text = String(weeks)
self.DLabel.text = String(days)
self.MLabel.text = String(months)
self.YLabel.text = String(years)
}
func populateVars(){
seconds = date2.secondsFrom(date1)
minutes = date2.minutesFrom(date1)
hours = date2.hoursFrom(date1)
days = date2.daysFrom(date1)
weeks = date2.weeksFrom(date1)
months = date2.monthsFrom(date1)
years = date2.yearsFrom(date1)
setLabels(seconds,minutes,hours,weeks,days,months,years)
}
不是关联的键:值对象,它是索引基于对象。但你要找的是 Object Literal
Array
但你可以重构你的代码:
function getcookie (cookiename){
var i, max, keyvalue, key, val,
cookiesObj = {}, //empty object literal
cookiesArr = document.cookie.split(";");
for(i=0, max=cookiesArr.length; i<max; i+=1) {
keyvalue = cookiesArr[i].split("=");
key = keyvalue[0].trim();
val = keyvalue[1].trim();
cookiesObj[key] = val;
}
return cookiesObj[cookiename];
}
答案 4 :(得分:0)
JavaScript数组不是关联数组,只有可能的索引值是数字的,从0开始到array.length - 1
结束。您之前在其他语言中使用过的示例或在其他语言中使用的是JavaScript对象,事实上,它实际上表现为关联数组。您可以object['key']
或object.key
访问对象值。第一个仅在使用变量或包含非法字符的密钥(即some-key
)访问密钥时使用,否则建议使用点访问,如第二个示例所示。
因此,您的mycookies
变量应该是一个对象,而不是一个数组。
如果您将行var mycookies = [];
更改为var mycookies = {};
,即将其从空数组更改为空对象,则其余代码应按预期工作。
以下是固定代码的示例代码段,我添加了一个模拟Cookie字符串,以便它可以可靠地运行:
var mockCookies = "a=1;b=2;c=3";
function getcookie(cookiename){
var mycookies = {}; // The cookie jar
var temp = mockCookies.split(";");
var key = "";
var val = "";
for(i=0;i<temp.length;i++){
key = temp[i].split("=")[0];
val = temp[i].split("=")[1];
mycookies[key] = val;
}
return mycookies[cookiename];
}
function printCookie(name) {
alert(getcookie(name));
}
&#13;
<button onclick="printCookie('a')">Get a</button>
<button onclick="printCookie('b')">Get b</button>
<button onclick="printCookie('c')">Get c</button>
&#13;