2016-05-04 47 views
-2

所以我有下面的代码从URL中拉出一个'参数',并在我的HTML中替换名为'demo'的ID:示例:sample.com?demo = testJavascript - 设置一个cookie并拉入ID

function getUrlParameter(sParam) { 
    var sPageURL = window.location.search.substring(1); 
    var sURLVariables = sPageURL.split('&'); 
    for (var i = 0; i < sURLVariables.length; i++) { 
     var sParameterName = sURLVariables[i].split('='); 
     if (sParameterName[0] == sParam) { 
      return sParameterName[1]; 
     } 
    } 
} 
var demo = decodeURIComponent(getUrlParameter('demo')); 
document.getElementById('demo').innerHTML = demo; 

然后我有以下的代码不相同,但它从一个cookie

function getCookie(c_name) { 
    if (document.cookie.length>0) { 
     c_start=document.cookie.indexOf(c_name + "="); 
     if (c_start!=-1) { 
      c_start=c_start + c_name.length+1; 
      c_end=document.cookie.indexOf(";",c_start); 
      if (c_end==-1) 
       c_end=document.cookie.length; 
      var cookieContent = "Welcome back " + unescape(document.cookie.substring(c_start,c_end)); 
      document.getElementById('demo').innerHTML = cookieContent; 
     } 
    } 
} 
getCookie('demo'); 

我希望做的是写的东西从参数立即将拉动,如果用户返回到没有URL参数的页面,从Cookie中拉出。我认为这是某种IF声明。但是我很困惑如何将这两个脚本结合在一起以同步工作。

因此,本质上,如果demo在URL中,插入任何ID = demo,如果不是,请在cookie中查找。 如果我可以给参数添加空格,这也会很棒。因此,如果网址:sample.com?demo=this+is+a+test 要有ID =这是一个测试

我已经想通了大部分。但是,在我的HTML文档中,所有ID的'demo'变成'undefined'。 我的HTML看起来像这样:欢迎新用户

所以我想它如果没有参数或饼干组显示“新用户”或任何显示在ID。希望这是有道理的。

+1

我的眼睛在流血。请正确格式化您的帖子。 –

+0

对不起,这是一个失败。 – user2736892

回答

0

取出getCookie中的innerHTML作业,并在找到请求的cookie时简单地返回cookieContent。然后你可以测试函数的返回值。

var demo = getUrlParameter('demo') || getCookie('demo'); 
if (demo) { 
    document.getElementById('demo').innerHTML = demo; 
} 
+0

太棒了,谢谢!我注意到,自从我的内容分类在上面的脚本中以来,我的内容中的跨度显示为“未定义”。如果用户去除网址,我不希望文字显示为undefined。我怎样才能避免这种情况? 一个独特的可识别元素。所以我想让文字显示'唯一可识别的元素'。除非它在URL或cookie中声明。希望这是有道理的。 – user2736892

+0

另外,如果我的参数是:demo = this + is + a + test我怎样才能将这些+的内容转化为我的内容/文本中的空格?我的内容中不能有+。想知道如何做到这一点。感谢帮助。祝你有美好的一天! – user2736892

+0

它不应该显示为undefined,因为在这种情况下,if()应该跳过innerHTML赋值。除非你把字符串'“undefined”放入cookie中。 – Barmar