作者 主題: javascripts問題  (閱讀 4797 次)

0 會員 與 1 訪客 正在閱讀本文。

cisco3662

  • 鑽研的研究生
  • *****
  • 文章數: 739
    • 檢視個人資料
javascripts問題
« 於: 2012-03-01 11:58 »
有一需求,希望於某個radio buttom選取後,另一個checkbox buttom 無法選取
目前於from1的table內加入onclick
  <input name="location" type="radio" value="radiobutton"  onclick="change()"/>

於<html></html>中加入javascripts
<script language='JavaScript'>
<!--
    function change() {
        xyz;
}

//-->
</script>
但不曉得function change()那段開如何下,謝謝指教

cisco3662

  • 鑽研的研究生
  • *****
  • 文章數: 739
    • 檢視個人資料
Re: javascripts問題
« 回覆 #1 於: 2012-03-01 18:03 »
或者換個方式問

假設我預設的checkbox是disabled
<input type="checkbox" name="checkbox2" value="checkbox" disabled/>

我希望點選某個radio buttom後,其checkbox2的disabled屬性消失

<script language='JavaScript'>
<!--
    function change() {
        document.form1.checkbox(disabled=false);
}

//-->
</script>

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
Re: javascripts問題
« 回覆 #2 於: 2012-03-02 00:15 »
<form name=form1>
<input type="checkbox" name="checkbox2" value="checkbox" disabled/>
<a onclick=go()>
<input type="radio" value="1" name="radio">
<input type="radio" value="2" name="radio">
</a>
</form>
<script>
function go(){
document.form1.radio[0].checked==true?document.form1.checkbox2.disabled=true:document.form1.checkbox2.disabled=false;
}
</script>

cisco3662

  • 鑽研的研究生
  • *****
  • 文章數: 739
    • 檢視個人資料
Re: javascripts問題
« 回覆 #3 於: 2012-03-04 11:47 »
謝謝學長,
再請教一下,若checkbox是一個陣列checkbox[]
則該如何處理,我試這樣是不行的
function go(){
document.form1.radio[0].checked==true?document.form1.checkbox2[].disabled=true:document.form1.checkbox2[].disabled=false;
}

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
Re: javascripts問題
« 回覆 #4 於: 2012-03-04 19:43 »
javascript 不允許變數名稱是 xx[]

http://phorum.study-area.org/index.php/topic,39162.msg196144.html#msg196144


...

在 javascript 中
1. 單一值=字串
2. 多個值=物件
(非正規想像)

說回正規 .. 一般正規中 , google 搜尋都會說
name 可以重複 , id 不可重複

其實 id 也可以重複的
代碼: [選擇]
<form name=form1>
<input type="checkbox" name="checkbox2" value="checkbox" disabled/>
<a onclick=go()>
<input type="radio" value="1" name="radio">
<input type="radio" value="2" name="radio">
</a>
</form>
<input type=text value=1 id=cc name=ccc xyz=a>
<input type=text value=2 id=cc name=ccc xyz=b>
<script>
function go(){
document.form1.radio[0].checked==true?document.form1.checkbox2.disabled=true:document.form1.checkbox2.disabled=false;
alert("n0="+ccc[0].value+"   n1="+ccc[1].value);
alert("g0="+document.getElementsByName("ccc")[0].value+"   g1="+document.getElementsByName("ccc")[1].value);
alert("i0="+cc[0].value+"   i1="+cc[1].value);
// alert("g0="+document.getElementById("cc")[0].value+"   g1="+document.getElementById("cc")[1].value); 無法執行
alert("g0="+document.getElementById("cc").value+"   g1="+document.getElementById("cc").value);
alert("g0="+document.getElementsByName("ccc")[0].xyz+"   g1="+document.getElementsByName("ccc")[1].xyz);
}
</script>
由上例子 .. id 與 name 都可重複
問題在於使用 getElementXYZ 這類函數
getElementsByName
getElementById ..... 除非有人寫一個 getElementsById
或用如上述奇怪的不存在屬性來製造差異性

因為 id 直屬 document 下 , 又無可用函數
所以若是兩個相同 name ,  在 dom 中又處於相同地位 , 也會有此窘境

再回非正規個人想像 ..
checkbox2 是陣列 , 那就用 checkbox2[0] ... [1] ... 呼叫
因為有兩個以上同地位的 checkbox2 塞值進去 , 因此成了物件
無論呼叫物件或變數 , 都必須是 javascript 變數命名規範


<div id=show></div>
for (x in document) {
document.getElementById("show").innerHTML+="this["+x+"]="+document[ x ]+"<br>";
}
用這段檢視 , 若是 [object]
再插入底下位置繼續往下找 ... 找幾次就熟了
for (x in document.物件) {
document.getElementById("show").innerHTML+="this["+x+"]="+document.物件[ x ]+"<br>";
}


陣列不能習慣老用 i ... 會變斜體
... 用 x 也不行
« 上次編輯: 2012-03-04 19:52 由 dark »