简单的JS功能不起作用

时间:2015-07-15 14:58:11

标签: javascript

我不能为我的生活弄清楚为什么这不起作用。这是一个简单的功能,可以在单选按钮更改时更改“添加到购物车”按钮,但是只要我执行该功能,它就说它不是一个功能。我在这里缺少什么?

// draw on canvas
        ctx.drawImage(img, 0, 0);
        var pixel = ctx.getImageData(0, 0, width, depth);

        var geom = new THREE.Geometry;
        var output = [];
        for (var x = 0; x < depth; x++) {
            for (var z = 0; z < width; z++) {
                // get pixel
                // since we're grayscale, we only need one element

                var yValue = pixel.data[z * 4 + (depth * x * 4)] / heightOffset;                       
                var vertex = new THREE.Vector3(x * spacingX, yValue, z * spacingZ);
                geom.vertices.push(vertex);
            }
        }

JS:

 <h2>Select a Payment Option:</h2>

 <form  method="post" enctype='multipart/form-data'>
   <input type="radio" name="addtocart" id="fullpay" value="66" onclick="fullpay();" /><h3 style="color: #f57e20;">Full Payment - <s>$119.80</s> $79.95</s></h3>

   <input type="radio" name="addtocart" id="payments" value="69" onclick="payments();" /><h3 style="color: #f57e20;">Payment plan - $26.65 / month for 3 months</h3>
   <hr/>
   <div id="cartbutton"></div>
 </form>

2 个答案:

答案 0 :(得分:4)

您正在定义内部您的“加载”处理函数。这意味着函数对于该处理函数是私有的,因此它们在全局上下文中不可见。

您可以通过在全局对象(window)上分配对属性的引用来显式导出函数,或者更好的是,在“load”处理程序中使用.addEventListener()来设置事件处理标记中的旧式事件属性。

答案 1 :(得分:1)

让你的功能全球化:

window.onload = function(){
// functions here are not global
};

// functions here are global
 function fullpay(){
    var cartbutton = document.getElementById("cartbutton");
    cartbutton.innerHTML = "<a href='/?add-to-cart=66' rel='nofollow' data-product_id='66' data-product_sku='' class='button add_to_cart_button'>Add to cart</a>";
}

 function payments(){
    var cartbutton = document.getElementById("cartbutton");
    cartbutton.innerHTML = "<a href='/?add-to-cart=69' rel='nofollow' data-product_id='69' data-product_sku='' class='button add_to_cart_button'>Add to cart</a>";
    }