You are here: DEVPPL Forum Programming JavaScript Forum
NOTIFICATIONS
54.114
MEMBERS
15.697
TOPICS
62.285
POSTS
  562
FLASH GAMES
7.740
TUTORIALS
 

Login

E-mail:
Password:

Node null error

0

Loading

Node null error

Postby Alexander » Wed May 11, 2011 2:57 pm

Dear guys,

I have buil a webshop system in JavaScript(school project)and if I run it , it refuses to work in chrome or internet explorer . In Firefox it works but I get node is null errors on line 343 . But I don't know why

And I you guys have better suggestions how to do something you can say so .

any help would be much appreciated.

my javascript code :
Code: Select all
// inladen
window.addEventListener("load",start,false);
 
function start()
{
insert_basket_contents(status);
 
}
 
 
 
 
/////////////////////////////////////////////////////////////////////////////
//
// cookie stuff
//
 
function save_cookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString()
    }
    else expires = "";
    document.cookie = name+"="+value+expires+"; path=/"
}
 
function read_cookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i<ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length)
    }
    return null
}
 
function delete_cookie(name) {
    save_cookie(name, "", -1);
}
 
/////////////////////////////////////////////////////////////////////////////
//
// product stuff
//
 
var g_currency = '€';
var g_decimal = ',';
var g_thousand = '.';
var g_cookiedays = 365;
var g_havebasket = 0;
var g_products = new Array();
 
function add_product(guid, name, price){
    var item = new Array(guid, name, price);
    g_products[g_products.length] = item;
}
 
function get_qty(guid){
    var cookie = read_cookie(guid+'_qty');
    if ((cookie != null) && (cookie != '')){
        return parseInt(cookie);
    }else{
        return 0;
    }
}
 
function set_qty(guid, qty){
    if (qty < 0) qty = 0;
    if (!qty){
        delete_cookie(guid+'_qty');
    }else{
        save_cookie(guid+'_qty', parseInt(qty), g_cookiedays);
    }
}
 
function add_item(guid, qty){
    set_qty(guid, get_qty(guid) + parseInt(qty));
    update_basket();
}
 
function remove_item(guid){
    set_qty(guid, 0);
    update_basket();
}
 
function empty_basket(){
    for(var i=0; i<g_products.length; i++){
        var product = g_products[i];
        var guid = product[0];
        remove_item(guid);
    }
}
 
/////////////////////////////////////////////////////////////////////////////
//
// basket stuff
//
 
function build_basket(container_id, checkout_url){
    var cell, row;
    var elm_parent = document.getElementById(container_id);
 
    var elm_table = create_element(elm_parent, 'TABLE');
    elm_table.setAttribute('border', '2');
    elm_table.setAttribute('cellPadding', '4');
    elm_table.setAttribute('cellSpacing', '0');
 
    // we have to have a tbody for some reason
    var elm_tbody = create_element(elm_table, 'TBODY');
 
    // add header row
    row = create_element(elm_tbody, 'TR');
    cell = create_element_filled(row, 'TH', 'Product');
    cell = create_element_filled(row, 'TH', 'Prijs');
    cell = create_element_filled(row, 'TH', 'Aantal');
    cell = create_element_filled(row, 'TH', 'BTW');
    cell = create_element_filled(row, 'TH', 'Totaal');
    cell = create_element_filled(row, 'TH', 'Verwijderen');
 
 
    var sub_total = 0;
 
    // add product rows
    for(var i=0; i<g_products.length; i++){
        var product = g_products[i];
 
        var guid = product[0];
        var name = product[1];
        var price = product[2];
   
        var qty = get_qty(guid);
 
        var total = price*qty;
         sub_total += total;
        var btw= total*0.21;
        sub_total += btw;
 
        row = create_element(elm_tbody, 'TR');
        row.style.display = 'none';
        row.id = 'basket_row_'+guid;
 
        cell = create_element_filled(row, 'TD', name);
 
        cell = create_element_filled(row, 'TD', format_price(price));
        cell.setAttribute('align', 'right');
       
       
        cell = create_element_filled(row, 'TD', 'QTY');
        cell.setAttribute('align', 'right');
 
        var input = document.createElement('INPUT');
        input.setAttribute('disabled', true);
        input.id = 'basket_input_'+guid;
        input.value = qty;
        input.size = 10;
        input.style.textAlign = 'right';
        input.onblur = update_qty;
        replace_contents(cell, input);
       
        cell = create_element_filled(row, 'TD', format_price(btw));
        cell.setAttribute('align', 'right');
       
           
        cell = create_element_filled(row, 'TD', 'Totaal');
        cell.setAttribute('align', 'right');
        cell = create_element(row, 'TD');
       
        var link = create_element_filled(cell, 'A', 'Verwijderen');
        link.href = "Javascript:remove_item('"+guid+"');";
       
       
    }
 
    // add "empty" row
    row = create_element(elm_tbody, 'TR');
    row.style.display = 'none';
    row.id = 'basket_empty_row';
    cell = create_element(row, 'TD');
    cell.setAttribute('colSpan', '5');
    cell.setAttribute('align', 'center');
    create_element_filled(cell, 'I', 'Je winkelmandje is leeg !');
 
    // show totals
    row = create_element(elm_tbody, 'TR');
 
    cell = create_element_filled(row, 'TH', 'Totaal:');
    cell.setAttribute('colSpan', '4');
    cell.setAttribute('align', 'left');
 
    cell = create_element_filled(row, 'TD', format_price(sub_total));
    cell.setAttribute('align', 'right');
    cell.id = 'basket_subtotal';
 
    // checkout button
    row = create_element(elm_tbody, 'TR');
    row.id = 'basket_checkout';
    row.style.display = 'none';
 
    cell = create_element(row, 'TD');
    cell.setAttribute('colSpan', '5');
    cell.setAttribute('align', 'right');
 
    link = create_element_filled(cell, 'A', 'Afrekenen »');
    link.href = checkout_url;
 
    g_havebasket = 1;
    update_basket();
}
 
function update_basket(){
    if (!g_havebasket) return;
 
    var sub_total = 0;
 
    // update product rows
    for(var i=0; i<g_products.length; i++){
        var product = g_products[i];
 
        var guid = product[0];
        var price = product[2];
        var qty = get_qty(guid);
 
        var total = price*qty;
        sub_total += total;
        var btw=0.21*total;
        sub_total+=btw;
 
        var row = document.getElementById('basket_row_'+guid);
        row.style.display = (qty > 0)?'':'none';
 
        // update qty
        var input = document.getElementById('basket_input_'+guid);
        input.value = qty;   
 
        // update total
        replace_contents(row.childNodes[4], document.createTextNode(format_price(total+btw)));
 
    }
 
     row = document.getElementById('basket_empty_row');
    row.style.display = (sub_total > 0)?'none':'';
 
    var cell = document.getElementById('basket_subtotal');
    replace_contents(cell, document.createTextNode(format_price(sub_total)));
 
     row = document.getElementById('basket_checkout');
    row.style.display = (sub_total > 0)?'':'none';
}
 
function update_qty(){
    if (!g_havebasket) return;
 
    for(var i=0; i<g_products.length; i++){
        var product = g_products[i];
 
        var guid = product[0];
 
        var row = document.getElementById('basket_row_'+guid);
        var cell = row.childNodes[2];
        var input = cell.childNodes[0];
 
        set_qty(guid, input.value);
    }
 
    update_basket();
}
 
function insert_basket_contents(node_name){
    var qty = 0;
    var node = document.getElementById("node_name");
        var s;   
 
 
    for(var i=0; i<g_products.length; i++){
        var product = g_products[i];
        var guid = product[0];
        qty += get_qty(guid);
    }
 
    if (qty){
        if (qty == 1){
            s = "Je mandje bevat 1 Artikel.";
        }else{
            s = "Je mandje bevat"+qty+" Artikels.";
        }
    }else{
        s = "Je winkelmandje is leeg !";
    }
 
    replace_contents(node, document.createTextNode(s));
}
 
function get_order_copy(){
 
    var sub_total = 0;
    var items = 0;
    var buffer = '';
 
    // update product rows
    for(var i=0; i<g_products.length; i++){
        var product = g_products[i];
 
        var guid = product[0];
        var name = product[1];
        var price = product[2];
        var qty = get_qty(guid);
        items += qty;
 
        var total = price*qty;
        sub_total += total;
 
        if (qty > 0){
            buffer += name+" ("+guid+") x"+qty+" @ "+format_price(price)+" = "+format_price(total)+"\n";
        }
    }
    buffer += "\nTotaal: ("+items+" items) "+format_price(sub_total)+"\n";
 
    return buffer;
}
 
/////////////////////////////////////////////////////////////////////////////
//
// DOM helper stuff
//
 
function create_element(parent, type){
    var elm = document.createElement(type);
    parent.appendChild(elm);
    return elm;
}
 
function create_element_filled(parent, type, contents){
    var elm = document.createElement(type);
    parent.appendChild(elm);
    elm.appendChild(document.createTextNode(contents));
    return elm;
}
 
function replace_contents(node, newnode){
    if (node.childNodes.length > 0){
        node.replaceChild(newnode, node.childNodes[0]);
    }else{
        node.appendChild(newnode);
    }
}
 
/////////////////////////////////////////////////////////////////////////////
//
// format stuff
//
 
function format_price(price){
    var s = new String(Math.round(price*100));
    var eurocent = s.substr(s.length-2);
    var euro = s.substr(0, s.length-2);
    euro = commaify(euro);
 
    if (eurocent.length == 0) eurocent = '00';
    if (eurocent.length == 1) eurocent = '0'+eurocent;
    if (euro.length == 0) euro = '0';
 
    return g_currency + euro + g_decimal + eurocent;
}
 
function commaify(s){
    if (s.length <= 3) return s;
    var out = s.substr(s.length-3);
    s = s.substr(0, s.length-3);
    while(s.length > 0){
        out = s.substr(s.length-3) + g_thousand + out;
        if (s.length > 3){
            s = s.substr(0, s.length-3);
        }else{
            s = '';
        }
    }
    return out;
}


Html code:
Code: Select all
<html>
<head>
    <title>My Shop</title>

    <style type="text/css">

        form {
            margin: 0;
            padding: 0;
            border: 0;
        }
        #mand
        {
            background-color: #cccccc;
            padding: 3px;
            text-align: right;
        }

    </style>
    <script src="basket.js" type="text/javascript"></script>
    <script src="products.js" type="text/javascript"></script>
</head>
<body>

<div id="mand">
    <table>
        <tr>
            <td><a href="basket.htm"><img src="basket.gif" width="21" height="10" border="0" alt="mand"/></a></td>
            <td><a href="basket.htm"><span id="status"></span></a></td>
        </tr>
    </table>
</div>

<h1>My Shop</h1>

My shop is DHTML demo. The shopping basket is entirely powered by javascript and cookies. No serverside code is going on here.<br>
<br>

<br>
<p>First Product: £12.34</p><br>
Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah.<br>
<form action="basket.htm" onsubmit="add_item('item_0001', this.qty.value); return true;">
    Quantity: <label>
    <input type="text" name="qty" value="1" size="5">
</label> <input type="submit" value="Add To Basket">
</form>
<br>

<hr>

<br>
<p>Second Product: £16.78</p><br>
Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah.<br>
<form action="basket.htm" onsubmit="add_item('item_0002', this.qty.value); return true;">
    Quantity: <label>
    <input type="text" name="qty" value="1" size="5">
</label> <input type="submit" value="Add To Basket">
</form>
<br>

<hr>

<br>
<p>Third Product: £50.12</p><br>
Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah.<br>
<form action="basket.htm" onsubmit="add_item('item_0003', this.qty.value); return true;">
    Quantity: <label>
    <input type="text" name="qty" value="1" size="5">
</label> <input type="submit" value="Add To Basket">
</form>
<br>

<hr>

<br>
<p>Fourth Product: £14.56</p><br>
Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah.<br>
<form action="basket.htm" onsubmit="add_item('item_0004', this.qty.value); return true;"> // vervang door knopje met clicklistener
    Quantity: <label>
    <input type="text" name="qty" value="1" size="5">
</label> <input type="submit" value="Add To Basket">
</form>
<br>

<hr>

<br>
<p>Fifth Product: £18.90</p><br>
Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah.<br>
<form action="basket.htm" onsubmit="add_item('item_0005', this.qty.value); return true;">
    Quantity: <label>
    <input type="text" name="qty" value="1" size="5">
</label> <input type="submit" value="Add To Basket">
</form>
<br>


</body>

</html>
Alexander
 
Reputation: 0
Posts: 1
Joined: Wed May 11, 2011 2:43 pm
Highscores: 0
Arcade winning challenges: 0

Node null error - Sponsored results

Sponsored results

Login to get rid of ads

 

0

Loading

Re: Node null error

Postby Rajmv » Sun Jul 17, 2011 5:31 pm

....
<body onload="start()">
....
Rajmv
 
Reputation: 0
Posts: 103
Joined: Thu Jul 14, 2011 8:22 am
Highscores: 0
Arcade winning challenges: 0
^ Back to Top