2010-06-10 9 views
2

Dans le balisage suivant sur une page, je veux extraire ce qui suit et les mettre dans des variables séparées.besoin d'extraire certaines valeurs de l'attribut et les placer dans des variables

1- Dans l'attribut onclick, récupérez la valeur après "ProductID" et placez-la dans sa propre variable. « ProductID » Donc, dans ce cas, il serait 318

2- Dans l'attribut onclick obtenir la valeur après la « Orig_price » et le mettre dans une variable « Orig_Price » Donc, dans ce cas, il serait 22,95

3- Dans l'attribut onclick obtenir la valeur après la "largeur" ​​et le mettre dans une variable, "largeur" ​​Donc dans ce cas, il serait 330

4- Dans l'attribut onclick obtenir la valeur après le "" hauteur "et le mettre dans une variable," hauteur "Donc, dans ce cas, il serait 300

<a href="javascript:void(0);" onclick="window.open('/BulkDiscounts.asp?ProductID=318&ProductCode=' + escape('LB30X40ES') + '&Orig_Price=22.95', 'Discounts', 'scrollbars,status,resizable,width=330,height=300');"><img src="/v/vspfiles/templates/100/images/buttons/btn_quantitydiscounts.gif" border="0" align="absmiddle"></a> 
+0

Vous voulez obtenir ces valeurs hors du DOM de la page en cours? Ou avez-vous une chaîne contenant ''? –

+0

récupère les valeurs du DOM – user357034

Répondre

1

DEMO MISE À JOUR:

DEMO:http://jsbin.com/axuce3/3SOURCE:http://jsbin.com/axuce3/3/edit

var pieces = $('a').attr('onclick').toString().split('?')[1].split('='); 
var parts = []; 
for (var i = 0; i < pieces.length; i++) { 
    var value = parseFloat(pieces[i]); 
    if (!isNaN(value)) parts.push(value); 
} 
alert('ProductID=' + parts[0] + 'Orig_price=' + parts[1] + 'width=' + parts[2] + 'height=' + parts[3]); 
+0

J'ai vérifié ce code et ça marche super !!! bien sûr, j'ai supprimé le code d'alerte et utilisé les variables au besoin. J'ai dû modifier le code ou cibler le premier "onclick" sur la page, ce qui n'était pas le cas. J'ai ajouté ceci au début de votre code. Merci beaucoup!!! $ ("a [onclick * = '/ BulkDiscounts.asp? ProductID =']") .attr ('id', 'quantité_dis'); var pieces = $ ('# quantity_dis'). '); – user357034

1

Essayez ce code:

var string = $('a').attr('onclick') + ""; // to be sure var string is string 
ProductID = string.match(/ProductID=(\d*)/i)[1]; 
Orig_Price = string.match(/Orig_price=([\d\.]*)/i)[1]; 
width = string.match(/width=(\d*)/i)[1]; 
height = string.match(/height=(\d*)/i)[1]; 
+0

Lorsque j'essaie ton code et mets une alerte (string); à la fin, je suis "non défini" dans la boîte d'alerte, donc peut-être vous ne pouvez pas faire référence à l'attr onclick? – user357034

+0

est-il un moyen d'obtenir l'ancre entière et les faire une chaîne de match? – user357034

+0

@user: Oui, vous pouvez obtenir la chaîne; dans ma réponse précédente, j'avais tort en attribuant un 'id' au mauvais élément. –

1

S'il vous plaît oublier ma réponse précédente, il a eu tort (de le tester, j'attribuer un id à l'élément mauvais). Vous pouvez obtenir la valeur de l'attribut onclick en utilisant getAttribute. Pour fins de test, j'ai changé votre exemple pour

<a href="javascript:void(0);" id="test" onclick="window.open('/BulkDiscounts.asp?ProductID=318&ProductCode=' + escape('LB30X40ES') + '&Orig_Price=22.95', 'Discounts', 'scrollbars,status,resizable,width=330,height=300');"><img src="/v/vspfiles/templates/100/images/buttons/btn_quantitydiscounts.gif" border="0" align="absmiddle"></a> 

Maintenant document.getElementById("test").getAttribute("onclick") retours

window.open('/BulkDiscounts.asp?ProductID=318&ProductCode=' + escape('LB30X40ES') + '&Orig_Price=22.95', 'Discounts', 'scrollbars,status,resizable,width=330,height=300'); 

Maintenant, vous pouvez obtenir les valeurs à l'aide

var theString = document.getElementById("test").getAttribute("onclick"); 
var ProductID = theString.match(/ProductID=(\d*)/i)[1]; 
var Orig_Price = theString.match(/Orig_price=([\d\.]*)/i)[1]; 
var width = theString.match(/width=(\d*)/i)[1]; 
var height = theString.match(/height=(\d*)/i)[1]; 

(code est volé de la réponse du Tambourin, donc s'il vous plaît donnez-lui les crédits;).

+0

Je ne suis pas sûr si cela fonctionnerait aussi bien que je n'ai pas essayé mais je suppose que ce serait le cas. Merci pour l'effort!!! – user357034

Questions connexes