Board logo

主題: [其他] [求助]如何用Javascript的replace取代有參數的值呢 [打印本頁]

發表人: ROACH    時間: 2009-3-19 12:02 AM     主題: [求助]如何用Javascript的replace取代有參數的值呢

我有個內容是這樣的

CODE:
[Copy to clipboard]
<Script>

  function rep(x,y)
   {
    //==傳進來後假如帶55會變成 55<input type='text' name='n55' size='5'>
      xx = x+"<input type='text' name='n"+x+"' size='5'>";     
  
   if ( y )  //true代表有點就把字串加進去
    document.all.addprod2.innerHTML += xx;
   else
    {
            //==勾勾拿掉的要刪除之前加進去的字串
      tt = document.all.addprod2.innerHTML;            
      document.all.addprod2.innerHTML = tt.replace(xx,"");        
    }
  }  
</Script>

<input type=checkbox value='55' name=confcok onclick='rep(this.value,this.checked)'>
<input type=checkbox value='44' name=confcok onclick='rep(this.value,this.checked)'>
您勾選的項目是<div id=addprod2></div>
當我點選checkbox時會看到下面會一直出現
當我把原先勾勾拿掉時,結果卻沒反應??
理論上應該也要把原先那串拿掉才對吧

想的半天搞不懂~~
發表人: Jerrico    時間: 2009-3-19 03:12 PM

replace(x,y)的第一個參數要用regular expression的方法。
發表人: GERRYccc    時間: 2009-3-19 08:34 PM

ROACH 要不要直接說出你的需求呢?
或許有比用 replace 更好的 solution

我修改了之後如下:
Sorry 我只會用 jQuery的方法。
jQuery.js 你可以下載回本機端,有機會可以找一下這方面資料,很好用的!
順便說明一下我改的方法,
是將加入的資料用一個Tag <span> 包住,並給予 id,
當要移除的時候,就用$('#'+id) 取得該物件,執行remove()函數就可以移除了。

CODE:
[Copy to clipboard]
<script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js"></script>
<Script>

  function rep(x,y)
   {
    //==傳進來後假如帶55會變成 55<input type='text' name='n55' size='5'>
      xx = "<span id='n"+x+"'>" +x+"<input type='text' name='n"+x+"' size='5'></span>";
  
   if ( y )  //true代表有點就把字串加進去
    document.all.addprod2.innerHTML += xx;
   else
    {
            //==勾勾拿掉的要刪除之前加進去的字串
      //tt = document.all.addprod2.innerHTML;            
      //document.all.addprod2.innerHTML = tt.replace(xx,"");        
        $('#n'+x).remove();
    }
  }  
</Script>

<input type=checkbox value='55' name=confcok onclick='rep(this.value,this.checked)'>
<input type=checkbox value='44' name=confcok onclick='rep(this.value,this.checked)'>
您勾選的項目是<div id=addprod2></div>
[GERRYccc 在  2009-3-19 09:00 PM 作了最後編輯]
發表人: ROACH    時間: 2009-3-27 12:43 PM

我在Javaworld詢問的時候
有個大大提出另外一個作法
也是不錯

CODE:
[Copy to clipboard]
window.onload = function() {
    var shower = document.getElementById('shower');
    var confcoks = document.getElementsByName('confcok');
    var tester = document.getElementById('tester');
    tester.onclick = function() {
        alert(shower.innerHTML);
    }
    for ( var i = 0; i < confcoks.length; i++ ) {
        doWhatYouWantToDo(confcoks[i]);
    }
    function doWhatYouWantToDo(cc) {
        var textElmt = document.createTextNode('n' + cc.value);
        var inptElmt = null;
        try {
            inptElmt = document.createElement('<input size=50 type=text name=n' + cc.value + '>');
        } catch (e) {
            inptElmt = document.createElement('input');
            inptElmt.setAttribute('type', 'text');
            inptElmt.setAttribute('name', 'n' + cc.value);
            inptElmt.setAttribute('size', '50');
        }
        cc.checked = false;
        cc.onclick = function() {
            if ( cc.checked ) {
                shower.appendChild(textElmt);
                shower.appendChild(inptElmt);
            } else {
                shower.removeChild(textElmt);
                shower.removeChild(inptElmt);
            }
        }
    }
}
</script>
<body>
<input type="button" value="show innerHTML" id="tester" />
<input type=checkbox value='55' name=confcok />
<input type=checkbox value='44' name=confcok />
您勾選的項目是<div id=shower></div>
</body>





歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0