2017-07-03 119 views
2

我有一種巨大的感覺,我只是在這裏愚蠢的,但它是我還是Js不射擊JsFiddle?JsFiddle JavaScript沒有解僱?

我在這裏創建了這個片段,但似乎無法啓動它。我可能錯過了一些超級明顯的東西,但會很感激任何幫助。

HTML

<div id="col"> 

    <h3 class="txt spacer">Dynamic input, based on select value...</h3> 
    <input type="text" name="field-one" class="txt stretch" /> 

    <div class="boxes"> 
     <input type="checkbox" id="box-2" onChange="myFunction()" checked> 
     <label for="box-2">Apply a name?</label> 
    </div> 
    </div> 
</div> 

的Javascript

function myFunction() { 
    // Text field element. 
    var a = document.getElementByName('field-one'); 
    // Checkbox element. 
    var b = document.getElementById('box-2'); 

    if (b.checked) { 
    a.disabled = false; 
    a.placeholder = 'Not Applicable'; 
    alert('Checkbox State Changed.'); 
    } else { 
    a.disabled = true; 
    a.placeholder = 'Enter Your Full Name'; 
    alert('Checkbox State Changed.'); 
    } 
} 

JS FIDDLE

預先感謝您的幫助。

Regards,

-B。

編輯

我是個白癡。多謝你們。

+1

必須在下拉菜單中設置* Load Type *。默認是將所有代碼包裝在一個加載事件處理程序中,然後它不是全局的。 – charlietfl

+0

''onchange不是onChange。 –

+0

@JayBuckman我認爲駱駝案例成功了,你能否詳細說明爲什麼使用'onChange'而不是'onchange'會帶來什麼壞處? – Beaniie

回答

3

這裏幾件事情,它應該是document.getElementsByTagName(複數),你需要改變設置,這將在正文關閉之前嵌入JS代碼。

var a = document.getElementsByName('field-one')[0]; 

我使用[0]這裏訪問數組的第一個元素爲document.getElementsByName()將返回如果遇到多個匹配的元素元素的數組。如果您想選擇特定的一個,請確保以更具體的方式選擇DOM元素。

並更改負載類型

不循環 - 在<body><head>也能發揮作用)

Demo

+0

感謝您的幫助和描述性答案。 Supurb。我馬上就會標記爲正確。 – Beaniie

2

打開DevTools,你會看到

Uncaught ReferenceError: myFunction is not defined 
    at HTMLInputElement.onchange ((index):192) 

現在爲什麼不定義函數?也許它沒有被定義在正確的位置?

看看那裏加載你的JavaScript,更改爲: enter image description here

這裏是一個updated fiddle。請注意,我修復了第3行getElementsByName的拼寫錯誤。

3

您的jsFiddle的Javascript負載類型設置爲onLoad。這將嵌套你的myFunction函數,因此在全局範圍內不可用。

您可以更改負載類型,或設置變量的window

window.myFunction = function().... 

注意:然後您會收到另一個錯誤getElementByName。這不是document的功能。您可能正在尋找getElementsByName

1

首先,將您的seeting的javascript LOAD TYPE設置爲head

最後,是getElementsByName不是getElementByName它會返回數組,所以你需要解析。

let a = document.getElementsByName('field-one')[0]; 

希望它有幫助。