对属性值执行数学运算

ste*_*ail 2 javascript

我正在尝试使用JavaScript对从属性获取的值执行数学运算.该属性是通过PHP循环创建的.我将举一个包含属性的html标签的示例,但请记住,有许多这些标签包含唯一的属性值.

HTML:

<a href="secondary_imgs.php..." mwidth="593"></a>
Run Code Online (Sandbox Code Playgroud)

JavaScript(jQuery):

    $("a[href^='secondary_imgs.php']").click(function(){
        var pageWidth = $(window).width();
        var maxshadowWidth = (Math.floor(pageWidth * 0.91808874)) - 2;
        var mWidth = $(this).attr("mwidth");
        var maxSecondaryWidth = mWidth + 60;
        alert (maxSecondaryWidth);
        if(maxSecondaryWidth <= maxshadowWidth) {
            var shadowWidth = maxSecondaryWidth;
        } else {
            var shadowWidth = maxshadowWidth;
        }
        var shadowboxrel = 'shadowbox;width=' + shadowWidth;
        $(this).attr('rel', shadowboxrel);
Run Code Online (Sandbox Code Playgroud)

这个操作似乎没有用,我觉得这与我在javascript中使用数学运算的经验不足有关.在这种情况下,我认为数学运算中使用属性值的方法有问题.

例如,上面的width属性定义为593.我定义maxSecondaryWidthmWidth + 60.我发出警报,看看我得到了什么价值.它应该被显示为653,但"警报"的价值是59360.显然我不明白如何添加,因为它+是连接两个值,而不是将它们加在一起.是否需要将属性值从字符串转换为整数?

Dig*_*ane 6

你必须使用转换为数字parseInt(),否则+将进行字符串连接:

var mWidth = parseInt($(this).attr("mwidth"), 10);
Run Code Online (Sandbox Code Playgroud)

如果属性也可以是浮点数,则使用parseFloat()而不是parseInt().