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

时间:2014-12-15 04:50:42

标签: javascript html

希望您能帮助我找到解决此问题的方法。我有一个页面,其中包含许多锚标记,其中包含具有唯一元素的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。我们将非常感谢您提供的任何帮助。 谢谢, Ridder

5 个答案:

答案 0 :(得分:1)

如果我们可以定义函数:

function MatchID(id) {
  var y = "0";
  if (id == "widget_1") {
    y = "39.00";
  } else if (id == "widget_2") {
    y = "59.00";
  } else if (id == "widget_3") {
    y = "85.00";
  }
  return y;  
}
<a href="#" class="button" id="widget_1" onclick="MatchID($(this).attr('id'));$(this).parent().submit(); return false;">Button</a>

答案 1 :(得分:1)

使用此

switch(document.getElementById(this.id)){
    case "widget_1":
        var value = "59.00";
        break;
    case "widget_2":
        var value = "60.00";
        break;
    case "widget_3":
        var value = "61.00";
        break;
}
return value;

这就是你完成基本工作所需要的,现在你只需要点击进入那里,如果是另一个页面,你需要知道它是如何发送的以及如何收到它

希望这会有所帮助。

答案 2 :(得分:1)

另一种方法

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

&#13;
&#13;
// 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();
});
&#13;
<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>
&#13;
&#13;
&#13;

Pure Javascript

此版本没有jQuert。享受!

注意:old browsers (IE < 8 && FF3.0)

有一些限制

&#13;
&#13;
// 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);
  };
  
});
&#13;
<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>
&#13;
&#13;
&#13;

只提取数字

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

提取子字符串(例如&#34; ItemA1&#34;)

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

答案 3 :(得分:0)

document.getElementsByTagName应该被赋予html标记名称而不是ID,而不是id属性document.getElementsByTagName("a")[i].id。 您的代码应如下所示:

var num = [];
for (var i = 0; i<11; i++) {
num[i] = document.getElementsByTagName("a")[i].id;
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; }

答案 4 :(得分:0)

document.getElementsByTagName("id")您的代码中的这一行不正确,因为html中没有标记为`。

要检索文档中的所有<a>标记,HTMLDocument接口的属性是document对象,它代表整个html文档。要检索所有<a>标记。用这个。

document.links此方法返回<a>标记的集合,您可以像访问数组一样访问此集合。例如,访问该集合中的第一个子项。

document.links[0].href要获取其href值或获取其ID,请执行document.links[0].id。希望这有帮助