簡體   English   中英

簡單功能無法在Chrome和Chromium中使用

[英]Simple function not working in Chrome and Chromium

這個簡單的雜項在Chromium(Ubunto)和Chrome中不起作用。

的HTML

<input type="button" id="saveFavPunch" name="saveFavPunch" value="save" onClick="saveFavPunch()" >

腳本

var req;
function saveFavPunch(){
    alert('govind singh');
    if(!req){
        req=$.ajax({
            type:"POST",                
            url:"edit?editType=saveFavPunch",
            data: {"value":document.getElementById("punchId").value},
            complete:function(){req=false},
            success: function(data){
                $.fancybox.close();
                if(data==""){
                    alert("ERROR!");
                }else{
                if(data=="0"){
                    alert("Internal Error Occurs, please try after some time");
                }else{
                    document.getElementById("favPunchline").innerHTML=data;
                }
                }                       
            }//end success
        });
    }
}

現在還不能添加注釋,代碼沒什么問題,但是要使其在jsfiddle中工作,請將onLoad更改為noWrap

每個設置的作用說明: http : //doc.jsfiddle.net/basic/introduction.html#frameworks-and-extensions

基本上,您需要將其放在簡單的<script>標記中,而不是在onLoad事件中

擺弄您提供的代碼: http : //jsfiddle.net/Sam88/YEPm3/12/

既然您在標簽中提到了jQuery,我想我會提供一個jQuery解決方案: Fiddle

HTML:

<input type="button" id="saveFavPunch" name="saveFavPunch" value="save" />

Javascript:

$("#saveFavPunch").on("click", function () {
    alert('hello2');
});

:)

編輯

Javascript未在JSFiddle運行可能與您的問題重復。 我引用了選定的答案:

您定義的函數是在onload函數中定義的,因此在它們可被引用之前,因為它們是在該函數中定義的,所以只能在該函數中引用它們。 您在HTML中將它們稱為全局變量。 您有三個選擇

a)(最簡單,最快,最不理想)-將函數blah(){}更改為window.blah = function(){}; 使功能全局化。

b)(理想的方式)-使用不引人注目的Javascript將行為僅從JS內附加到DOM元素,這意味着將HTML與JS分開。

c)使jsfiddle不包裝東西。 將onLoad更改為不環繞(身體或頭部)。

因此,代替您執行var e = document.getElementById('foo'); e.onclick =哈哈; 僅在JS中。

我推薦b,因為它鼓勵最佳做法。

只需更改一下即可-將JSFiddle設置從“ onLoad”更改為“ No wrap-in”,它可以工作:

http://jsfiddle.net/3f7PT/

onLoad選項的問題在於,這是它在結果中輸出的內容:

//<![CDATA[ 
    window.onload=function(){
        function saveFavPunch(){
            alert('hello2');
        }
}//]]>

因此,您的函數被無意間包裝在另一個函數中,這會阻止從該onclick調用中找到它。

希望這可以幫助。

以下整個腳本對我來說在Chrome中正常運行。

<html>
<head>
<script>
function saveFavPunch(){
    alert('hello2');
}
</script>
</head>
<body>
<input type="button" id="saveFavPunch" name="saveFavPunch" value="save" onClick="saveFavPunch()" >
</body>

這有效

document.getElementById("saveFavPunch").addEventListener("click", saveFavPunch);
function saveFavPunch(){
    alert('hello2');

}

http://jsfiddle.net/6sg9R/

Ye JSFiddle對Alerts非常挑剔。 正如Spassvogel所顯示的那樣,它沒有任何問題,但是從文件開始,而不是在JSfiddle上,您的方式應該可以正常工作。

即使是您遇到此類問題的人,也請使用div標簽

    <div id="saveFavPunch" style="height:30px; widht:100px; display:block;" onClick="saveFavPunch()">Save</div> 

我認為使用此代碼可以解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM