Javascript:将标签的值传递给变量

标签 javascript html

希望你能帮我找到解决这个问题的方法。我有一个包含许多 anchor 标记的页面,这些 anchor 标记包含一个具有唯一元素的 ID。以下是链接示例:

<a href="#" class="button" id="widget_1" 
   onclick="$(this).parent().submit(); return false;">Button</a>

<a href="#" class="button" id="widget_2" 
   onclick="$(this).parent().submit(); return false;">Button</a>

<a href="#" class="button" id="widget_3" 
   onclick="$(this).parent().submit(); return false;">Button</a>

下面是我尝试创建的用于收集“id”中的值的代码:

var num = [];
for (var i = 0; i<11; i++) {
  num[i] = document.getElementsByTagName("id")[i].textContent;
    if (num[i] == "widget_1"){ var y = "39.00"; return y;}
    else if (num[i] == "widget_2"){ var y = "59.00"; return y;}
    else if (num[i] == "widget_3"){ var y = "85.00"; return y;}
    else { var y = "0";}

 return y; }

我想做的是捕获 id 上的内容并使用它将它传递给数组,如果内容匹配,则返回“y”的值。例如,如果我单击第二个链接,则会返回 59.00。可以提供的任何帮助将不胜感激。 谢谢, 里德

最佳答案

另一种方法

此方法还允许您删除标记中的 onclick 事件并提高可读性,separating behavior from structure . (又名 Separation of Concerns)

// put your prices on an array;
var prices = [39.0, 59.0, 85.0];

// match all widget(s) (aka anchors), add click handler.
$("[id^=widget]").click(function(element) {
   // calculate the index into prices array based on anchor id.
   var index = parseInt(this.id.substring(7)) - 1;

   // get the pirce
   var price = prices[index];
    
   alert("Price is: " + price);

   // here you could call 
   // this.$parent.submit();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" class="button" id="widget_1">Button</a>
<a href="#" class="button" id="widget_2">Button</a>
<a href="#" class="button" id="widget_3">Button</a>

纯Javascript

这个版本没有 jQuert。享受吧!

注意:old browsers (IE < 8 && FF3.0) 有一些限制

// put your prices on an array;
var prices = [39.0, 59.0, 85.0];

var elements = document.querySelectorAll('[id^=widget]');

Array.prototype.forEach.call(elements, function(element) {
  
  var index = parseInt(element.id.substring(7)) - 1;
  var price = prices[index];
  element.onclick = function(event) {
       alert(price);
  };
  
});
<a href="#" class="button" id="widget_1">Button</a>
<a href="#" class="button" id="widget_2">Button</a>
<a href="#" class="button" id="widget_3">Button</a>

只提取数字

var r = /\d+/;
var s = "add_to_cart_sku_ThisItemA1_CEB";
var index = s.match(r);
alert (index);

提取子字符串(例如“ItemA1”)

var code = "add_to_cart_sku_ThisItemA1_CEB";
var strIndex = code.substring(code.indexOf("Item"), code.lastIndexOf('_'));
alert (strIndex);

关于Javascript:将标签的值传递给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27477556/

相关文章:

javascript - AppleScript 从网页特定部分的 URL 保存文档

javascript - 与 foreach javascript 中的下一个元素进行比较

javascript - 遍历 LevelDB

javascript - "The entity name must immediately follow the ' & ' in the entity reference."

javascript - 为什么 html 文件在bundle.js 中看不到函数?

javascript - 为什么我的 HighCharts 图表无法呈现?

javascript - 长按时显示菜单 iOS - Phonegap

用于向某些元素添加自定义属性的 Javascript

html - 如何将数字放在左边,将百分比和单词 'Off' 堆栈放在右边

javascript - 触摸开始时灰色表单按钮