javascript字符串值变量

时间:2013-07-16 16:55:30

标签: javascript arrays string type-conversion eval

所以我有一个有趣的问题。虽然我已经找到了解决方案,但我想知道你对它的看法。

详细说明: 我有一个javascript前端用于扫描一些ID。为了使用户更友好,脚本会保存所有扫描的ID并将其存储在数组中。在用户扫描ID之后,它将以div显示并且还放入隐藏输入以进行进一步的提交操作。 这看起来像这样:

<div id="scan_output">
    <div class="alert alert-success" style="">
        <button class="close single-scan-output-close" data-dismiss="alert">×</button>
        <div>ID #66666</div>
        <input type="hidden" value="herp;66666;derp" name="data[Stock][0]">
    </div>
    <div class="alert alert-success" style="">
        <button class="close single-scan-output-close" data-dismiss="alert">×</button>
        <div>ID #987654</div>
        <input type="hidden" value="blub;987654;foo" name="data[Stock][1]">
    </div>
    <div class="alert alert-success" style="">
        <button class="close single-scan-output-close" data-dismiss="alert">×</button>
        <div>ID #123456</div>
        <input type="hidden" value="foo;123456;bar" name="data[Stock][2]">
    </div>
</div>

如您所见,输入中有一些不同的值,因为必须将包含更多信息的格式上传到后端。我刚刚添加了一些虚拟数据。

name属性在第二个维度中存储索引,在后端也很方便,因为你得到一个数组。此索引也是javascript数组的索引,其中存储ID以执行唯一检查,因此如果用户扫描ID两次,则会通知用户。

因此,如果用户意外地扫描了错误的内容,他可以通过单击“x”按钮将其删除。

我的第一次尝试看起来如下。触发“关闭”事件后,我抓住当前关闭的元素:

var $inputElement = $this.parent().find('input[type=hidden]');
var sNameAttribute= $inputElement.attr('name');

name属性现在作为一个简单的字符串存储在“sNameAttribute”中,如下所示:“data [Stock] [1]”或“data [Stock] [2]”当然取决于他点击的元素

我没弄明白如何从这个字符串值中获取索引。我不想使用像“split”或regex-filter这样的解决方法。

为了完成任务,我刚刚在输入中添加了一些数据属性,其中索引存储为普通变量,如下所示:

<input type="hidden" value="blub;987654;foo" name="data[Stock][1]">

我的问题是,您将如何解决此问题,或者如何从名称属性中存储的字符串值“data [Stock] [1]”获取索引。我尝试了一些eval()函数,但没有得到有用的结果。

1 个答案:

答案 0 :(得分:0)

如果它是关于获取事件发生在哪个div /按钮的索引,在页面加载时绑定onclick事件并获取索引将不正常?

$('.single-scan-output-close').click(function (event) {
    alert($(this).index());
});