2011-08-23 33 views
12

Tôi cố gắng để đơn giản là kiểm tra xem tôi có một hộp văn bản đầu vào trống rỗng nhưng tôi nhận được lỗi này khi tôi chạy này trong chrome:Không thể đọc chiều dài tài sản không xác định

Uncaught TypeError: Cannot read property 'length' of undefined. 

Sau đây là cách để tôi đi về làm việc đó . Tôi kiểm tra sự sẵn sàng của DOM và sau đó gọi hàm.

function walkmydog() { 
    //when the user starts entering                                     
    if(document.getElementById('WallSearch').value.length == 0) { 
     alert("nothing"); 
    } 
} 

if (document.addEventListener) { 
    document.addEventListener("DOMContentLoaded", walkmydog, false); 
} 
+0

bạn có thể vui lòng đính kèm các phần có liên quan của HTML của bạn? –

+1

Bạn có chắc 'WallSearch' là ID của phần tử' input' không? Nếu có, bạn sẽ không nhận được lỗi đó: http://jsfiddle.net/fkling/x9Vf2/ –

+0

Làm thế nào để bạn kiểm tra sự sẵn sàng của DOM? – bjornd

Trả lời

7

Id của đầu vào có vẻ không phải là WallSearch. Có thể bạn đang bối rối rằng nameid. Chúng là hai thuộc tính khác nhau. name được sử dụng để xác định tên mà giá trị được đăng, trong khi id là mã nhận dạng duy nhất của phần tử bên trong DOM.

Khả năng khác là bạn có hai phần tử có cùng id. Trình duyệt sẽ chọn bất kỳ cái nào trong số này (có thể là cái cuối cùng, có thể là cái đầu tiên) và trả về một phần tử không hỗ trợ thuộc tính value.

3

lẽ, trước tiên bạn có thể xác định xem DOM được thực sự tồn tại,

function walkmydog() { 
    //when the user starts entering 
    var dom = document.getElementById('WallSearch'); 
    if(dom == null) 
    { 
     alert('sorry, WallSearch DOM cannot be found'); 
     return false;  
    } 

    if(dom.value.length == 0) { 
     alert("nothing"); 
    } 
} 

if (document.addEventListener) { 
    document.addEventListener("DOMContentLoaded", walkmydog, false); 
} 
Các vấn đề liên quan