0

誰かが私が必要とする2つの機能を手伝ってもらえますか? コントロール ID に一致する Cookie 文字列からプロパティ値を取得する関数と、コントロール ID のプロパティ値を設定する関数が必要です。私の文字列は次のようになります

var cookieValue='id=1&state=normal&theme=purple:id=2&state=maximized&theme=pink';

文字列は、コントロール プロパティごとにコロン cookieValue.split (':') で分割する必要があります。また、propertyValue を設定するときは、cookieString を更新して結合する必要があります。誰かがこれを行う方法を知っていますか。

関数は次のようになります

function setPropertyValue(cookieString, id,  propertyName, propertyValue) {
    if(id) setProperty_Value
    return cookieString;
}

function getPropertyValue(cookieString, id, proprtyName) {
     return propertyValue;
}
4

1 に答える 1

0

これを試して:

function setPropertyValue(cookieString, id,  propertyName, propertyValue) {
  cookieObjects = cookieString.split(':');
  for (var i = 0; i < cookieObjects.length; i++)
  {
    cookieObject = cookieObjects[i];
    if (cookieObject.indexOf("id=" + id) >= 0)
    {
      cookieProperties = cookieObject.split("&");
      for (var j = 0; j < cookieProperties.length; j++)
      {
        cookieProperty = cookieProperties[j];
        if (cookieProperty.indexOf(propertyName) >= 0)
        {
          return cookieString.replace(cookieProperty, cookieProperty.split("=")[0] + "=" + propertyValue);
        }
      }
    }
  }
  return propertyValue;
}

function getPropertyValue(cookieString, id, propertyName) {
  cookieObjects = cookieString.split(':');
  for (var i = 0; i < cookieObjects.length; i++)
  {
    cookieObject = cookieObjects[i];
    if (cookieObject.indexOf("id=" + id) >= 0)
    {
      cookieProperties = cookieObject.split("&");
      for (var j = 0; j < cookieProperties.length; j++)
      {
        cookieProperty = cookieProperties[j];
        if (cookieProperty.indexOf(propertyName) >= 0)
        {
          return cookieProperty.split("=")[1];
        }
      }
    }
  }
  return propertyValue;
}

var cookieValue='id=1&state=normal&theme=purple:id=2&state=maximized&theme=pink';

alert(getPropertyValue(cookieValue, "1", "state"));
cookieValue = setPropertyValue(cookieValue, "1", "state", "not");
alert(cookieValue);
于 2013-07-08T15:52:20.823 に答える