1

我正在尝试具有可以单击“让它成为我的商店”链接的功能,它会根据 id 保存 li 的内容,并将 li 的内容拉到另一个页面上。

这段代码:

<li><xsl:attribute name="id">store-<xsl:value-of select="@id"/></xsl:attribute></li>

输出到

<li id="store-1075"></li> 

由“@id”表示的数字 1075 会根据每个商店位置而变化,并且有多个位置。

本节中的 li 自动生成添加到后端的任何商店位置。因此,在前端,它当前显示了多个列表项存储位置。

<ul id="storeList">
    <xsl:for-each select="$currentPage/* [@isDoc]">
      <xsl:sort select="@nodeName" order="ascending" />
        <li>
          <xsl:attribute name="id">store-<xsl:value-of select="@id"/></xsl:attribute>

            <a href="{umbraco.library:NiceUrl(@id)}">
                <img class="location-image" alt="">
                    <xsl:attribute name="src">
                        <xsl:value-of select="storeImage"/>
                    </xsl:attribute>
                </img>
            </a>

           <a href="{umbraco.library:NiceUrl(@id)}">
              <xsl:value-of select="location"/>
            </a>

            <p><xsl:value-of select="./address"/></p>
            <p><xsl:value-of select="./addressCity"/></p>

            <div class="makeMyStoreWrapper"><a class="makeMyStore" href="#"><xsl:attribute name="id">store-<xsl:value-of select="@id"/></xsl:attribute>MAKE IT MY STORE</a></div>

        </li>
    </xsl:for-each>
</ul>

现在我已经设置好在使用 localStorage.setItem 单击时保存 ul id="storeList" 的状态。然后,只要#storeList 的 id 出现在代码中,它就会提取保存到 localStorage 的任何值,如下所示:

$(function() {

var save = $('#storeList').get(0);

$(save).click(function() {
localStorage.setItem('saved', this.innerHTML);

});


if ( localStorage.getItem('saved') ) {
save.innerHTML = localStorage.getItem('saved');

}

显然这不是我想要的。相反,我希望它保存每个 li 点击的内容。我希望代码是这样的:

var id = any of the store ids or the specific ids, whatever works better.
var save = document.getElementById('store'+id);

或者 var id 可能等于所有可能的商店 id 编号的数组。

主要目的是一个商店定位器页面,您可以在其中单击一个或多个商店并将它们保存到您的“我的商店”页面。我几乎让它工作了,但我碰壁了。任何帮助都会很棒,如果有什么需要澄清的,请告诉我。我从不使用 ASP,所以这对我来说很棘手,这是我第一次从头开始做任何 jQuery 或 javascript。我最初尝试将它与 cookie 一起使用,但由于没有用户登录,我决定改用 localStorage。

4

1 回答 1

1

我刚刚完成了一个类似类型的项目,希望这会让你朝着正确的方向前进

在文档准备功能内部:

$('.store').on('click', function () { // something with the class store clicked
    var storeStorageKey = $(this).attr('id'); // store id of the item 

        $(this).data('value', 1); // use of html5 data values on the html line helped alot, just settin static right now
 //set in local storage so refreshing the page remembers what youve clicked
        localStorage.setItem(storeStorageKey, $(this).data('value'));
 });

现在您可以拥有一个可以通过商店 ID 访问的集合,尽管最好将整个本地存储值存储为 JSON 对象以进行迭代,无论您喜欢哪个

Heres a link to my project javascript that used local storage if you would like reference https://github.com/Jrizzi1/ND-mSummit-bingo/blob/master/js/script.js

于 2012-10-23T23:22:06.233 回答